2011-11-24 67 views
2

在我的應用程序組合根中構建了一個大型實例樹,其中父節點可以由子節點通過例如代表和觀察者隱式引用。這是管理對象的關係的簡化圖:這個應用程序樹會被垃圾收集嗎?

A <---+ 
    B | | 
    C - + | 
    D  | 
E  | <-+ 
    F ----+ | 
    G   | 
    I -------+ 

我的直覺是,如果我在我的作文根有物體A和E的引用,然後設置這些爲null,完整的對象樹將是垃圾集。

對不起?

+0

「對對象A和B有引用」 - 不應該是A和E嗎? –

+0

@亨克:是的 - 謝謝你的收穫!固定。 –

回答

3

這是正確的,因爲您沒有任何其他可達對樹中節點的引用。這是因爲互相引用的不可達對象仍然是,如果沒有外部(即可達到的)對其中任何一個的引用。

+0

F - > A呢?我不確定我是否正確理解了這個問題,但是最終是不是一組相互引用的對象呢?如果我的問題沒有意義,請詳細說明...... – OmarOthman

+2

是的,它是一組相互引用的對象。如果沒有任何外部引用,即它們不可訪問,則這些資源可以進行垃圾回收。這是因爲垃圾收集器使用滑動算法而不是引用計數算法。 –

+0

我明白你的觀點。只是爲了確定,F並沒有提到它,對吧?或另一個無法訪問的對象是指它... – OmarOthman