Java 核心技术编程语言爱好者一个Java码农眼中的技术世界

GC中新生代进入老年代的方式汇总

2020-12-16  本文已影响0人  迦叶_金色的人生_荣耀而又辉煌

1.新生代的正常复制算法进入老年代

通过新生代的复制算法,年龄达到15仍存活的可进入(JVM参数MaxTenuringThreshold决定,默认15)

2.空间担保

如果Survivor存不下活跃的对象,则直接进入到old区,age=2,这种方式叫空间担保

3.动态年龄

survivor中已满,且至少有50%的对象年龄大于平均年龄,则会把这些大于平均年龄的对象直接写到老年区中。

4.大对象直接进入老年代

大对象在Survivor里存不下,也直接进入old区
tips:只针对Serial和Parnew收集器生效,PS收集器无效

List<byte[]> result = new ArrayList<>();
while (true){
    result.add(new byte[1024*1024*3]);
    Thread.sleep(500);
}

jvm配置:-XX:PretenureSizeThreshold=1M -XX:+UseParNewGC


上一篇 下一篇

猜你喜欢

热点阅读