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;
}
问题是:当执行超出这个范围时,其中一个实例是否会被垃圾回收,因为它们中的每一个都有一个引用,由另一个持有?
是的,他们都会。GC遍历依赖树,发现程序的任何其他部分都无法访问它们,并将正确处理它们。
以下是一篇很好的MSFT文章:http://msdn.microsoft.com/en-us/magazine/bb985010.aspx
是的,它们将被垃圾收集。循环引用导致内存泄漏?