4

考虑 C# 中的以下类:

class A
{
    public B b;
}

class B
{
    public A a;
}

之后:

{
    A a = new A();
    B b = new B();
    a.b = b;
    b.a = a;
}

问题:当执行超出此范围时,是否会对任一实例进行垃圾收集,因为仍然存在对它们中的每一个的引用,由另一个持有?

4

2 回答 2

4

是的,他们都会。GC 遍历依赖关系树,发现程序的任何其他部分都无法访问它们,并将正确处理它们。

这是一篇很好的 MSFT 文章:http: //msdn.microsoft.com/en-us/magazine/bb985010.aspx

于 2013-06-25T00:04:27.047 回答
1

是的,它们将被垃圾收集。 循环引用导致内存泄漏?

于 2013-06-25T00:04:05.653 回答