动态对象年龄判断
本文中用到的案例是接着上一篇文章继续的,如果有不清楚同学请先查看上一篇文章
为了能更好地适应不同程序的内存状况,HotSpot虚拟机并不是永远要求对象的年龄必须达到- XX:MaxTenuringThreshold才能晋升老年代,如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半,年龄大于或等于该年龄的对象就可以直接进入老年代,无须等到-XX:MaxTenuringThreshold中要求的年龄。
我们来看执行后的内存情况:
Heap
def new generation total 9216K, used 4316K [0x00000000fec00000, 0x00000000ff600000, 0x00000000ff600000)
eden space 8192K, 52% used [0x00000000fec00000, 0x00000000ff037008, 0x00000000ff400000)
from space 1024K, 0% used [0x00000000ff400000, 0x00000000ff4002d8, 0x00000000ff500000)
to space 1024K, 0% used [0x00000000ff500000, 0x00000000ff500000, 0x00000000ff600000)
tenured generation total 10240K,&nb

本文介绍了Java HotSpot虚拟机的动态对象年龄判断策略,当对象在Survivor空间中达到一定比例时,可直接晋升至老年代。此外,文章还详细阐述了空间分配担保的概念,当老年代空间不足时,JVM如何根据HandlePromotionFailure参数决定进行Minor GC或Full GC。最后,讨论了老年代使用标记-整理算法的原因及其优缺点,强调优化JVM的目标是减少老年代的Full GC和提高系统运行效率。
最低0.47元/天 解锁文章
1244

被折叠的 条评论
为什么被折叠?



