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

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