这个应用程序树会被垃圾收集吗?

时间:2011-11-24 07:52:51

标签: c# garbage-collection clr

在我的app组合根中,构建了一个大型实例树,其中子节点可以通过例如委托和观察者隐式引用父节点。这是托管对象关系的简化视图:

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

我的预感是,如果我在我的合成根中有对象A和E的引用,然后将它们设置为null,那么整个对象树将被垃圾收集。

正确?

1 个答案:

答案 0 :(得分:3)

这是正确的,因为您没有对树中节点的任何其他可到达引用。这是因为如果没有外部(即可到达)对其中任何一个的引用,则无法访问的对象仍然符合垃圾回收的条件。