Old GC过程
2021-06-30 09:35:36 1 举报
Old GC过程
作者其他创作
大纲/内容
2MB对象
main方法栈帧局部变量
老年代(10MB)
2MB
创建3个2MB对象
S1(1MB)
array3
图3:GC之前
Eden(8MB)
回收垃圾
JVM
创建2个2MB对象和128KB对象
图4:GC之后
array2
图2:GC之后
ParNew垃圾回收器
128KB
此时局部变量array3在创建2MB对象时,发现Eden区不够放了,所以触发了一次GC
S0(1MB)
局部变量array3创建了3个2MB对象+128KB对象,引用指向为null。垃圾回收器识别为垃圾对象就回收了。此时局部变量array2创建的128KB对象+未知对象已经超过动态年龄判定规则,直接进入老年代
创建128KB对象
array4
局部变量array1由于代码里:array1=null,让array1没有在引用,所以垃圾回收器认为是垃圾回收了;此时array2还有引用,在经历一次GC后array2进入s0区,局部变量array3在GC后也分配到Eden区
图1:GC之前
未知对象
array1
此时局部变量array4在创建2MB对象时,发现Eden区不够放了,所以触发了一次GC
0 条评论
回复 删除
下一页