我被告知不要创建太多长寿命对象以获得更好的gc性能。因为长寿命的物体将被移动到旧的。收集旧版本的物品会更加昂贵。
但长寿是什么意思呢? 100毫秒太长了吗?那10秒呢?
我的应用需要15G堆内存并使用G1 gc,我无法找到一些配置,例如将对象移动到旧版本的时间长度
答案 0 :(得分:2)
终身临界值是对象在被提升为旧类之前可以在年轻的gen集合中存活的次数。这可以使用这些options:
进行配置答案 1 :(得分:1)
长寿命对象是能够在较小的集合中存活并且被“移动”到旧代的对象。
在第一次GC时,活动对象从新一代移动到幸存者空间。 然后,经过一些gcs之后,他们就会在旧空间中度过。
如此处survivor doc所示,gc对象在终身之前存活的数量取决于幸存者的空间大小。
在每个GC上,JVM确定对象在终止之前可以复制的次数,称为终身临界阈值。选择此阈值是为了使幸存者空间保持半满。
如果您想获得更多控制权,可以使用JVM参数XX:MaxTenuringThreshold