2012-01-04 46 views
1

這只是爲了闡明我對java垃圾收集複製收集器的理解。需要澄清java垃圾收集複製收集器

是不是相同的邏輯=>

我感動的葡萄一束從一個盒子到其他的,哪些是不一串葡萄都在盒子有資格進行垃圾回收離開了那裏。

有些人可能會發現我的理解很愚蠢,因爲我想在此澄清的一點是,檢查參考時所消耗的時間。

回答

2

葡萄的例子很好。

當GC工作效率最高時,它假定只有一小部分數據需要複製到下一個空間。如果您保留大部分數據,空間(伊甸園或倖存者)可能不夠大,或者您的數據中等壽命過長。 (其中GC不能很好地處理)

0

是,

Java使用「標記和清除算法」作出符合垃圾收集對象

這與您的葡萄例子類似。 JVM將所有不再被引用的對象標記爲值'1',之後所有不符合條件的對象保持值'0'。算法運行時,它將掃描所有值爲「1」的對象。

+1

當您使用「-XX:+ UseConcMarkSweepGC」啓用它時,它會使用標記和掃描,但僅適用於終身空間。 – 2012-01-04 08:12:46