Old GC之手动模拟对象进入老年代
2021-06-30 23:10:08 2 举报
GC
作者其他创作
大纲/内容
未知对象
图2:GC之后
2MB
图2:触发GC
array
Eden(8MB)
老年代(10MB)
main线程Java虚拟机栈
GC之后Eden区还剩array创建的2MB对象和未知对象,经过一次垃圾回收之后2MB对象和未知对象转移到Survivor0区,发现未知对象可以转换到Survivor0区,2MB对象超过Survivalor区,直接进入老年代。此时array3创建的2MB对象分配到Eden区
array3
回收
array2
128KB
Survivor0(1MB)
Survivor1(1MB)
垃圾回收器
main方法栈帧局部变量
JVM
局部变量array2创建的128KB对象,指向为null,被垃圾回收器识别为垃圾回收了。局部变量array也有2个对象数组被识别为垃圾对象回收。代码如下:byte[] array = new byte [2 * 1024 * 1024]; array = new byte[2 * 1024 * 1024]; array = new byte[2 * 1024 * 1024];为什么前2个对象会被回收呢?因为前2个对象在new完以后就没有引用了,被识别为垃圾对象了
图1:GC前
0 条评论
回复 删除
下一页