2011-03-30 17 views
1

代GC如何工作?
什麼是代GC?世代垃圾收集是如何工作的?

感謝

+6

你想知道維基百科頁面沒有涵蓋什麼? http://en.wikipedia.org/wiki/Garbage_collection_(computer_science)#Generational_GC_.28ephemeral_GC.29 – 2011-03-30 17:23:40

+2

http://www.google.co.uk/search?q=How+Generational+GC+works 21,600,000點擊次數 – 2011-03-30 17:26:11

+0

@彼得勞瑞,我有277萬點擊!你是如何獲得巨大成果的? *諷刺笑* – 2011-03-30 17:43:39

回答

1

Wikipedia's explanation

甲代GC(也稱爲 短暫的GC)將對象劃分爲 代和,在大多數週期,將 地方僅 世代的一個子集的對象到初始白 (譴責)集。此外, 運行時間系統保留 的知識,當引用跨越 時,觀察參考的創建和覆蓋 。當垃圾收集器運行時,它可能能夠使用這個知識來證明在初始白色集合中的一些對象是 無法到達而不必遍歷整個參考樹的 。如果代數假設成立,則這個 產生更快的收集週期,同時仍收回大多數不可到達的對象。

基本上,這是一種啓發式的方法。垃圾收集會將新創建的對象放入內存區域(稱爲白色集合),當該集合已滿時,仍然引用的對象將移動到另一個區域,並清除白色集合並填充新的新對象。白色集合是這樣的假設:在那裏找到的物體通常是不可達的。

欲進一步閱讀JVM微調Garbage Collection

3

簡單地說,代收集器管理的一系列日趨長期的對象區域內存。這些地區被稱爲世代。最年輕的一代 - 有時被稱爲Eden世代 - 由剛剛創建的對象組成。它傾向於看到變化的lot - 物體始終來自這一代。老一輩的變化很少。這是因爲物體持續時間越長,持續時間越長。

分代收集器以這種方式劃分內存來提高效率,因爲它可以將大部分時間花費在小伊甸園一代,並且大多數時候可以忽略最老的一代。通過限制需要查看的內存量,收集器減少了需要執行的工作量。