https://blog.csdn.net/syilt/article/details/107525985

JVM堆中有新生代老年代两块区域,因为使用分代回收策略新生代还会划分为Eden和两个Survivor区,JVM堆大概是这样子:

Untitled

根据对象年龄

JVM会给对象增加一个年龄(age)的计数器,对象每“熬过”一次GC,年龄就要+1,待对象到达设置的阈值(默认为15岁)就会被移移动到老年代,可通过-XX:MaxTenuringThreshold调整这个阈值。

Untitled

一次Minor GC后,对象年龄就会+1,达到阈值的对象就移动到老年代,其他存活下来的对象会继续保留在新生代中。

动态年龄判断