1)新生成的對象在Eden區完成內存分配
2)當Eden區滿了,再建立對象,會由於申請不到空間,觸發minorGC,進行young(eden+1survivor)區的垃圾回收。(爲何是eden+1survivor:兩個survivor中始終有一個survivor是空的,空的那個被標記成To Survivor)
3)minorGC時,Eden不能被回收的對象被放入到空的survivor(也就是放到To Survivor,同時Eden確定會被清空),另外一個survivor(From Survivor)裏不能被GC回收的對象也會被放入這個survivor(To Survivor),始終保證一個survivor是空的。(MinorGC完成以後,To Survivor 和 From Survivor的標記互換)
4)當作第3步的時候,若是發現存放對象的那個survivor滿了,則這些對象被copy到old區,或者survivor區沒有滿,可是有些對象已經足夠Old(經過XX:MaxTenuringThreshold參數來設置),也被放入Old區
5)當Old區被放滿的以後,進行完整的垃圾回收,即 Full GC對象