2009-07-08 64 views
0
class Stage 
{ 

    Actor act1 = new Actor(); 
    Actor act2 = new Actor(); 
    Actor act3 = new Actor(); 

} 

Stage stg = new Stage(); 

垃圾回收在java場景中的表現如何?內部對象的垃圾回收

stg = null; 

將三個對象創建act1act2act3也得到垃圾回收?

回答

0

當每個對象的引用計數爲0時,GC將收集它們全部。

1

是的。

當垃圾收集器運行時,它會看到對舊對象的引用已經消失,並將其清理乾淨。下一次運行時,它會看到現在沒有任何指向其他三個對象,並且也清理它們。

從概念上講,無論如何,我相信大多數垃圾收集者會比實踐中的智能更聰明一點,並且一次就能完成。確切的機制會有所不同。

+0

所以這意味着我不需要專門設置內部對象爲null。他們會自動處理。 謝謝 – krisp 2009-07-08 13:04:26

0

如果沒有更多引用它們,它們將被垃圾回收。不要忘記從外部刪除附加的EventListener,因爲它們也算作參考(只要您不使用weak-reference)。