通過市場的力量,不斷淘汰舊的行業,把有限的資源讓給那些競爭力更強、利潤率更高的企業。類似地,硅谷也在不斷淘汰過時的人員,從全世界吸收新鮮血液。經過半個多世紀的發展,在硅谷地區便形成只有卓越才能生存的文化。本着這樣的理念,GC承擔了淘汰垃圾、保存優良資產的任務。
G1 GC在回收暫停階段會回收最大量的堆內區間(Region),這是它的設計目標,通過回收區間達到回收垃圾的目的。這裏只有一個例外情況,這個例外發生在並行標記階段的清除(Cleanup)步驟,如果G1 GC在清除步驟發現所有的區間都是由可回收垃圾組成的,那麼它會立即回收這些區間,並且將這些區間插入到一個基於LinkedList實現的空閒區間隊列裏,以待後用。因此,釋放這些區間並不需要等待下一個垃圾回收中斷,它是實時執行的,即清除階段起到了最後一道把控作用。這是G1 GC和之前的幾代GC的一大差別。
G1 GC的垃圾回收循環由三個主要類型組成:年輕代循環[1]、多步驟並行標記循環[2]、混合收集循環[3]。當然,單線程、獨佔式、高強度的Full GC還是繼續存在的,它針對GC的評估失敗[4]提供了一種失敗保護機制,即強力回收。
在年輕代回收期,G1 GC暫停應用程序線程,然後從年輕代區間移動存活對象到倖存者區間或者老年區間,也有可能是兩個區間都會涉及。對於一個混合回收期,G1 GC從老年區間移動存活對象到空閒區間,這些空閒區間也就成爲了老年代的一部分。