JVM中新生代对象何时进入老年代

今天面试中提到了这个问题,没回答全面,记录一下

关于JVM中堆(Heap)的参数设置这里有必要记录一下,有被问到

“-Xms"用于表示堆区的起始内存,等价于-XX:InitialHeapSize

“-Xmx"则用于表示堆区的最大内存,等价于-XX:MaxHeapSize

1.对象在Survivor空间正常通过复制算法进入老年代

相关参数:由MaxTenuringThreshold决定,默认15(java对象头中年龄位为4bit)

2.空间担保

Survivor空间存不下该对象时,则直接进入老年代

3.动态年龄判断

如果在 Survivor 空间中所有相同年龄的对象,大小总和大于 Survivor 空间的50%,那么年龄大于或等于该年龄的对象就直接进入老年代,无须等到阈值中要求的年龄。