1、在 JVM 内存模型的堆中,堆被划分为新生代和老年代,新生代又被进一步划分为 Eden区 和 Survivor区,Survivor 区由 From Survivor 和 To Survivor 组成;
2、当创建一个对象时,对象会被优先分配到新生代的 Eden 区。此时 JVM 会给对象定义一个对象年轻计数器(-XX:MaxTenuringThreshold);
3、当 Eden 空间不足时,JVM 将执行新生代的垃圾回收(Minor GC);
JVM 会把存活的对象转移到 Survivor 中,并且对象年龄 +1;
对象在 Survivor 中同样也会经历 Minor GC,每经历一次 Minor GC,对象年龄都会+1;
4、如果分配的对象超过了-XX:PetenureSizeThreshold,对象会直接被分配到老年代。