我剛剛開始學(xué)習(xí)G1 GC。這是我的另一個(gè)問題的延續(xù):Full GC in G1 GC我看到一篇文章說 full gc 和 Major gc(老一代集合)是兩個(gè)不同的東西,full gc 是單線程的。我對(duì)此感到困惑。如果兩者是不同的事情,那么 full gc 如何收集垃圾,即 G1 GC 中的 full gc 期間執(zhí)行哪些算法或階段或步驟。
1 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
對(duì)于 G1,有一種方法可以區(qū)分這兩者(這并不適用于所有 GC 算法)。
G1 使用堆區(qū)域(通常大小為 1Mb)。這些內(nèi)存區(qū)域被組合在一起,形成年輕代和老一代作為單獨(dú)的邏輯區(qū)域。對(duì)于老一代集合,G1 將嘗試通過簡(jiǎn)單地回收不再有任何實(shí)時(shí)數(shù)據(jù)的區(qū)域(非常便宜)來回收足夠的空間,或者將實(shí)時(shí)數(shù)據(jù)從人口稀疏的區(qū)域復(fù)制到空區(qū)域(從而最大化該區(qū)域中的實(shí)時(shí)數(shù)據(jù)量)地區(qū))。
然而,如果 G1 不能以這種方式回收足夠的空間,它必須回退到完全壓縮集合。
這可以解釋主要收集和完整GC之間的區(qū)別。
添加回答
舉報(bào)
0/150
提交
取消