JVM相关学习内容整理_JVM内存结构_栈帧结构_对象回收过程
2020-06-22 11:45:42 0 举报
对象创建到回收,jvm结构,栈帧结构
作者其他创作
大纲/内容
对象依然有效
判定对象年龄
类信息
独享内存空间
s1:1
old
大于等于规定年龄默认15放入老年代设置年龄参数-XX:MaxTenuringThreshold
方法区元空间-XX:MetaspaceSize-XX:MaxMetaspaceSize
操作数栈
老年代能够存放
方法出口
栈帧
main()
常规无效判定标准使用GC Roots方式进行判定
public class Temp{\tpublic static void main(String[] args){\t\tSystem.out.println(result());\t}\tpublic static int result(){\t\tint a=10;\t\tint b=5;\t\tint c=a+b;\t\treturn c;\t}}
1.老年代剩余空间是否能存放当前年轻代所有的对象;2.剩余空间能否存放过往时间中youngGC回收后升入老年代对象大小的平均值
result()
对象是否为无效对象
对象
线程栈-Xss
老年代
动态链接
创建对象
局部变量表
线程栈
判定幸存者区域能否存放下该对象
分配在栈空间
s0:1
老年代不能存放过往升入老年代对象平均大小
进入eden
判断是否开启了逃逸检查开启:-XX:+DoEscapeAnalysis 关闭:-XX:-DoEscapeAnalysis是否开启了标量替换开启-XX:+EliminateAllocations判断对象大小在栈帧中能否存放下
eden区域满溢
本地方法栈
线程共享内存空间
youngGC
FullGC
非常大设置具体对象大小参数-XX:PretenureSizeThreshold=1000000 (单位是字节) -XX:+UseSerialGC
栈帧result()
return c;
不能分配在栈空间
FullGC对象回收
判断是否可以分配在栈栈帧
判定老年代剩余空间情况
判定对象大小
栈帧main()
类对象obj.class
分配在空间
对象进入幸存者区域对象年龄加一
对象创建到垃圾回收基本过程
程序执行结束
程序计数器
eden:8
105=+
幸存者区域无法存放该对象升级到老年代
JVM运行时活动区
堆-Xms-Xmx
新生代-Xmn
栈帧print()
youngGC回收对象
print()
堆空间(非G1垃圾回收器情况下)new:old=1:2
老年代空间满溢
常规
Object obj = new Object();
0 条评论
回复 删除
下一页