minor GC 是發生在堆內存-新生代中的GC,過程如下:(圖片來自文獻,侵刪)
1.首先,所有新創建對象放在eden區域,兩個survivor區域開始爲空。
2.當新創建的對象將eden區域裝滿,一次minor GC 被觸發。
3.存活對象被移動到第一塊survivor 區域(S0),不存活對象隨着eden區域的清理而被刪除。
4.下一次minor GC ,eden區域和上次一樣,存活對象被移動到survivor區域,不存活對象被清理刪除,和上次不同的是,這次存活對象被移動到另一個survivor區域(S1)。另外,S0中上次minor GC的倖存對象,年齡+1,然後被一起移動到S1區域。一旦所有的倖存對象都被移動到S1,S0和eden區域都會被清理掉。注意此時S1區域有不同年齡的倖存對象。
5.下一次minor GC,和之前的一輪一樣。不同的是,這一次S0和S1變換了角色,存活的對象被移動到S0,上次倖存的對象年齡+1,eden和S1區域被清空。
to be continue....
參考文獻:https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html