G1的垃圾回收概念

通過市場的力量,不斷淘汰舊的行業,把有限的資源讓給那些競爭力更強、利潤率更高的企業。類似地,硅谷也在不斷淘汰過時的人員,從全世界吸收新鮮血液。經過半個多世紀的發展,在硅谷地區便形成只有卓越才能生存的文化。本着這樣的理念,GC承擔了淘汰垃圾、保存優良資產的任務。


G1 GC在回收暫停階段會回收最大量的堆內區間(Region),這是它的設計目標,通過回收區間達到回收垃圾的目的。這裏只有一個例外情況,這個例外發生在並行標記階段的清除(Cleanup)步驟,如果G1 GC在清除步驟發現所有的區間都是由可回收垃圾組成的,那麼它會立即回收這些區間,並且將這些區間插入到一個基於LinkedList實現的空閒區間隊列裏,以待後用。因此,釋放這些區間並不需要等待下一個垃圾回收中斷,它是實時執行的,即清除階段起到了最後一道把控作用。這是G1 GC和之前的幾代GC的一大差別。


G1 GC的垃圾回收循環由三個主要類型組成:年輕代循環[1]、多步驟並行標記循環[2]、混合收集循環[3]。當然,單線程、獨佔式、高強度的Full GC還是繼續存在的,它針對GC的評估失敗[4]提供了一種失敗保護機制,即強力回收。


在年輕代回收期,G1 GC暫停應用程序線程,然後從年輕代區間移動存活對象到倖存者區間或者老年區間,也有可能是兩個區間都會涉及。對於一個混合回收期,G1 GC從老年區間移動存活對象到空閒區間,這些空閒區間也就成爲了老年代的一部分。

 



[1] 即Young Collection Cycle。

[2] 即Multistage Concurrent Marking Cycle。

[3] 即Mixed Collection Cycle。

[4] 即Evacuaion failure。



歡迎關注麥克叔叔每晚十點說,有興趣的朋友可以關注公衆號,我們一起交流、一起學習。

發佈了428 篇原創文章 · 獲贊 197 · 訪問量 82萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章