堆空間劃分了代:
image
年輕代(Young Generation)分為 eden 和 Survivor 兩個(gè)區(qū)埠巨,Survivor 又分為2個(gè)均等的區(qū)随闺,S0 和 S1双妨。
首先淮阐,新對象都分配到年輕代的 eden 空間,Survivor 剛開始是空的刁品。
image
當(dāng) eden 滿了以后泣特,minor gc 就被觸發(fā)了。
image
還被引用的對象被移到第一個(gè) survivor 空間挑随,然后把整個(gè) eden 空間都清理掉状您。
image
下一次 minor gc 時(shí)還是同樣的過程,把 eden 中還被引用的對象移到 survivor 空間,然后清除 eden 空間膏孟,只是這次是移到第二個(gè) survivor(S1)眯分,同時(shí),把上次 minor gc 移到 S0 中的對象也移到 S1柒桑,并增加這些對象的年齡弊决,移到 S1 之后,S0 也被清理掉魁淳,這時(shí)飘诗,eden 和 S0 都干凈了。
image
下一次 minor gc 同理界逛,只是這次換為了 S0昆稿,eden 和 S1 都干凈了。
image
這個(gè)過程不斷重復(fù)息拜,這樣 survivor 中對象的年齡會一直增長貌嫡,當(dāng)達(dá)到一定程度(例如8),這個(gè)對象就從年輕代轉(zhuǎn)移到了老年代该溯。
image
這樣岛抄,老年代中的對象就持續(xù)增加。
image
最后就會觸發(fā) major gc 對老年代空間進(jìn)行清理和壓縮狈茉。
image
文檔地址:
https://www.oracle.com/webfolder/technetwork/tutorials/obe/java/gc01/index.html