考虑在C#以下类: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#以下类: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
啊,这是他们无法从其他地方找到。谢谢。 –
是的,他们将被垃圾收集。 Circular References Cause Memory Leak?
韦尔普,我在搜索只是坏。 –