JVM的内存区域划分,类加载过程,GC垃圾回收机制总结

本文详细阐述了JVM的内存区域划分(包括方法区、堆区、栈区、程序计数器和本地方法区),类加载过程(双亲委派模型和类加载顺序),以及垃圾回收机制(可达性分析和分代回收策略)。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、JVM内存区域划分

JVM(Java虚拟机):一个运行起来的Java进程,是进程,那必然就会从操作系统中申请内存。再把这些内存分区,干不同的事。分区有五种:方法区(元数据区),堆区,栈区,程序计数器,本地方法区(native)。

(1) 方法区(元数据区 1.8版本这样叫):存储的内容就是类对象编译生成的.class文件,加载到内存后,就变成类对象了。即先编译生成.class文件,JVM执行.class文件过程中,就变成类对象。

(2) 堆区(Heap):存储的内容就是代码中new的对象,占据空间最大的区域。

(3) 栈区(Stack):存储的内容就是在代码执行过程中,方法之间的调用关系。在栈里,一个一个的元素被称为栈帧,每个栈帧就代表了一个方法调用,栈帧里就包含着这个方法的入口,方法返回的位置,方法的形参,方法的返回值,局部变量等等。栈帧进行出栈入栈的操作。

(4) 程序计数器:比较小的空间,主要就是存放一个"指令地址",表示下一条要执行的指令的地址。执行的指令是在方法区里的。即就是指令是在方法区中的,而指令的地址是在程序计数器中的。

编译生成.class文件的同时,类中的成员方法都会被编译成二进制的指令,并放到.class文件中。等到JVM执行该文件时,即类加载的时候,产生类对象,二进制指令也在类对象中。

刚开始调用方法,程序计数器记录的就是方法的入口的地址。随着一条一条的执行指令,每  执行一条,程序计数器的值都会自动更新。

(5) 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

去北极避暑~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值