背景:因为MaxTenuringThreshold设置不合理,导致年轻代的对象很快进入年老代,导致年老代FGC频率增加,进而影响系统性能。
线上某服务一直存在FGC比较严重的情况,排查下来是MaxTenuringThreshold=3.
当一个对象在新生代中经历过Minor GC之后对象的年龄就+1,原来0岁此时就变为1了,当再经历一次回收之后依然没有被回收则年龄就变为2,而我们给这参数设置的最大参数为3,假如对象的年龄变为4超些我们设置的最大的这个3时,该对象就会从新生代晋升到老年代当中。
.看Oracle官方的说明:
Do Not Set -XX:MaxTenuringThreshold to a Value Greater Than 15
Last updated on APRIL 18, 2021
APPLIES TO:
Java SE JDK and JRE - Version 1.5.0 and later
Information in this document applies to any platform.
本文介绍了由于MaxTenuringThreshold设置不当导致线上服务频繁发生Full GC的问题。通过调整这一参数,可以避免年轻代对象过早晋升至年老代,从而降低FGC频率,提升系统性能。分析了官方建议,并展示了调整后的FGC次数对比,显示优化效果显著。
订阅专栏 解锁全文
1402

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



