在我的app组合根中,构建了一个大型实例树,其中子节点可以通过例如委托和观察者隐式引用父节点。这是托管对象关系的简化视图:
A <---+
B | |
C - + |
D |
E | <-+
F ----+ |
G |
I -------+
我的预感是,如果我在我的合成根中有对象A和E的引用,然后将它们设置为null,那么整个对象树将被垃圾收集。
正确?
答案 0 :(得分:3)
这是正确的,因为您没有对树中节点的任何其他可到达引用。这是因为如果没有外部(即可到达)对其中任何一个的引用,则无法访问的对象仍然符合垃圾回收的条件。