JVM <1>

本文深入探讨了JVM内存模型,包括方法栈的作用与管理,本地方法栈的使用,程序计数器的功能,以及对象在堆中的存储方式。同时,详细讲解了变量名在JVM中的查找机制,对象句柄的概念,以及堆的分区如Eden区、Survival区(From区和To区)、老年区和永久区的工作原理。

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

我们类的模板信息存放在方法栈,当一个类执行了class.forName();这就可以通过反射获取类,而jvm就从方法栈获取这些信息。本地方法栈,程序计数器,等等
java栈当中,他属于线程私有。jvm会为每个线程都创建一个方法栈,而且每个线程都会产生一个程序计数器,查看编译后的字节码,javap -c 在class文件所在的目录输入这个命令即可看到,java栈就会根据多少个方法就会产生多少个方法栈,每个方法栈有局部变量表,操作数栈,动态链接,方法出口,全局变量放到堆中。
jvm如何查找到自定义的变量名?jvm会把整形常量压人操作数栈,把栈顶的操作数放到局部变量槽中的第几个,行号就是程序计数器对应的数字,所有的计算都会弹出栈放到槽中,计算结果后在返回一个结果到操作数栈,invoke就是计算结果,jvm不会记录自定义的变量名,而是记录的是第一个,第二个。方法栈运行完之后就不会再存在。
对象的寻找,堆中会有对象的句柄,存放到句柄池中,存放的是对象的地址。
堆的分区,eden区,from区,to区,新生区,老年区,永久区。新生区里面包含from区,以及to区。运行程序,可以通过jconsole查看程序的堆分区的回收的情况。
从工具的显示的图形,会跑一段时间回收了部分的对象,然后就一直递增
从Eden区,是一个波浪线,不断的回收,survival区,分为from区已经to区,也可以通过dump文件分析。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值