考慮在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?
韋爾普,我在搜索只是壞。 –