2009-01-09 26 views

回答

20

是的,他們是。基本上,GC從「已知根」(靜態變量,alll線程中所有堆棧幀的局部變量)走到找到不能被垃圾收集的對象。如果無法從根目錄獲取對象,則有資格收集。

編輯:湯姆指出了這一點,我認爲是值得提升到答案本身:

從技術上講,靜態變量不是 根源 - 它們是通過由類加載器 引用的類 引用這些類被 所引用的對象引用,這些對象被引用的引用所引用的 。

的差異很可能是無關緊要的的時間,但它是很好的瞭解:)

+0

從技術上講,靜態變量不是根 - 它們被類加載器引用的類所引用,這些類由引用由根引用引用的對象引用的類引用。 – 2009-01-09 12:08:03

4

雙向飛碟上的錢的,像往常一樣。我只會補充一點,你描述的情況是引用計數(早期C++智能指針的標準策略)未被使用的原因。