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