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,對象會直接被分配到老年代。