C#循环引用垃圾回收

本文关键字:循环 引用 | 更新日期: 2023-09-27 18:19:41

考虑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;
}

问题是:当执行超出这个范围时,其中一个实例是否会被垃圾回收,因为它们中的每一个都有一个引用,由另一个持有?

C#循环引用垃圾回收

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

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

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