对jvm的-XX:MaxTenuringThreshold的理解
解决方法:
-XX:MaxTenuringThreshold设置的是年龄阈值,默认15(对象被复制的次数)
JVM为每个对象定义了一个对象年龄(Age)计数器, 对象在Eden出生如果经第一次Minor GC后仍然存活, 且能被Survivor容纳的话, 将被移动到Survivor空间中, 并将年龄设为1. 以后对象在Survivor区中每熬过一次Minor GC年龄就+1. 当增加到设置的阀值时将会晋升到老年代。
但有一个疑惑,为什么我设置-XX:MaxTenuringThreshold足够大了防止大量对象进入老年区,虽然进入老年区的对象减少了,但还是有?
因为如果在Survivor空间中相同年龄所有对象大小的总和大于Survivor空间的一半, 年龄大于或等于该年龄的对象就可以直接进入老年代。
本文链接:http://www.yayihouse.com/yayishuwu/chapter/1623