【发布时间】:2020-05-16 17:50:23
【问题描述】:
在我的gc日志中,有很多对象分配给老年代(ALLOC(Old)日志),当前阈值为15,我的对象年龄只有1,即这些对象不会被提升到老年代,我猜猜在 G1 GC 中直接将对象分配给老年代有什么条件吗?提前致谢!
GC 日志摘录:
grep "ALLOC(Old)" gc.log | wc -l
387
grep "thres" gc.log
Desired survivor size 1207959552 bytes, new threshold 15 (max 15)
Desired survivor size 1207959552 bytes, new threshold 15 (max 15)
- age 1: 37707272 bytes, 37707272 total
JDK版本:
openjdk 版本“1.8.0_222”
OpenJDK 运行时环境(内部版本 1.8.0_222-b10)
OpenJDK 64 位服务器 VM(内部版本 25.222-b10,混合模式)
*********2020/01/31更新****************
这不是巨大的对象,gc log 会以另一种方式显示巨大的对象分配,请参考下面的 gc log 摘录,谢谢!
>> grep "StartsH" gc.log | wc -l
51
>> grep "ContinuesH" gc.log | wc -l
324
>> grep "ALLOC(Old)" gc.log | wc -l
528
参考:https://www.redhat.com/en/blog/collecting-and-reading-g1-garbage-collector-logs-part-2
【问题讨论】:
标签: java garbage-collection jvm g1gc