在我的應用程序組合根中構建了一個大型實例樹,其中父節點可以由子節點通過例如代表和觀察者隱式引用。這是管理對象的關係的簡化圖:這個應用程序樹會被垃圾收集嗎?
A <---+
B | |
C - + |
D |
E | <-+
F ----+ |
G |
I -------+
我的直覺是,如果我在我的作文根有物體A和E的引用,然後設置這些爲null,完整的對象樹將是垃圾集。
對不起?
在我的應用程序組合根中構建了一個大型實例樹,其中父節點可以由子節點通過例如代表和觀察者隱式引用。這是管理對象的關係的簡化圖:這個應用程序樹會被垃圾收集嗎?
A <---+
B | |
C - + |
D |
E | <-+
F ----+ |
G |
I -------+
我的直覺是,如果我在我的作文根有物體A和E的引用,然後設置這些爲null,完整的對象樹將是垃圾集。
對不起?
這是正確的,因爲您沒有任何其他可達對樹中節點的引用。這是因爲互相引用的不可達對象仍然是,如果沒有外部(即可達到的)對其中任何一個的引用。
F - > A呢?我不確定我是否正確理解了這個問題,但是最終是不是一組相互引用的對象呢?如果我的問題沒有意義,請詳細說明...... – OmarOthman
是的,它是一組相互引用的對象。如果沒有任何外部引用,即它們不可訪問,則這些資源可以進行垃圾回收。這是因爲垃圾收集器使用滑動算法而不是引用計數算法。 –
我明白你的觀點。只是爲了確定,F並沒有提到它,對吧?或另一個無法訪問的對象是指它... – OmarOthman
「對對象A和B有引用」 - 不應該是A和E嗎? –
@亨克:是的 - 謝謝你的收穫!固定。 –