1、在 JVM 內(nèi)存模型的堆中,堆被劃分為新生代和老年代,新生代又被進(jìn)一步劃分為 Eden區(qū) 和 Survivor區(qū),Survivor 區(qū)由 From Survivor 和 To Survivor 組成;
2、當(dāng)創(chuàng)建一個對象時,對象會被優(yōu)先分配到新生代的 Eden 區(qū)。此時 JVM 會給對象定義一個對象年輕計數(shù)器(-XX:MaxTenuringThreshold);
3、當(dāng) Eden 空間不足時,JVM 將執(zhí)行新生代的垃圾回收(Minor GC);
JVM 會把存活的對象轉(zhuǎn)移到 Survivor 中,并且對象年齡 +1;
對象在 Survivor 中同樣也會經(jīng)歷 Minor GC,每經(jīng)歷一次 Minor GC,對象年齡都會+1;
4、如果分配的對象超過了-XX:PetenureSizeThreshold,對象會直接被分配到老年代。