已解决
JVM虚拟机:通过一个例子解释JVM中栈结构的使用
来自网友在路上 197897提问 提问时间:2023-11-01 17:31:00阅读次数: 97
最佳答案 问答题库978位专家为你答疑解惑
代码
代码解析
main方法执行,创建栈帧并压栈。
int d=8,d为局部变量,是基础类型,它位于虚拟机栈的局部变量表中
然后创建了一个TestDemo的对象,这个对象在堆中,并且这个对象的成员变量(day,month,year)也在堆中,test为对象引用,位于虚拟机栈的局部变量表中。
之后执行test.change(d),当调用change时,会创建一个栈帧并且压栈,然后i为局部变量,位于虚拟机栈的局部变量表。当方法change执行完成后,栈帧出栈,i也就消失了,该栈帧可以被回收。
之后执行BirthDate d1= new BirthDate(3,10,1996); d1为对象引用,位于虚拟机栈的局部变量表中,对象new BirthDate()存在堆中,调用构造方法,创建栈帧并压栈,栈帧中的局部变量表存储了基础类型int的day,month,year。而day,month,year为成员变量,它们存储在堆中(new BirthDate()里面)。当BirthDate构造方法执行完之后,栈帧出栈,day,month,year将从栈中消失,栈帧可被回收。
当main方法执行完之后,d变量,test,d1引用都在栈帧中,栈帧出栈,可被回收,堆中的new Test(),new BirthDate()将等待垃圾回收。
查看全文
99%的人还看了
相似问题
- Nuxt3框架局部文件引用外部JS/CSS文件的相关配置方法
- uni-app:前端实现心跳机制(全局)+局部页面控制心跳暂停和重新心跳
- 局部指令和全局指令的注册和使用
- 使用双动态令牌混合器学习全局和局部动态以进行视觉识别
- 【Unity ShaderGraph】| 物体靠近时局部溶解,根据坐标控制溶解的位置【文末送书】
- AI系统源码ChatGPT网站源码+ai绘画系统/支持GPT4.0/支持Midjourney局部编辑重绘
- Unity3D ECS架构适合作为主架构还是局部架构
- 全局变量和局部变量在for循环的使用
- 【MATLAB源码-第64期】matlab基于DWA算法的机器人局部路径规划包含动态障碍物和静态障碍物。
- c#局部类
猜你感兴趣
版权申明
本文"JVM虚拟机:通过一个例子解释JVM中栈结构的使用":http://eshow365.cn/6-29488-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!
- 上一篇: 实习答点。
- 下一篇: JAVA同城服务共享茶室的技术开发文章