C#垃圾收集器交叉引用
交叉引用对象/类的垃圾收集器可用资源,不再从主程序引用。 例如 -C#垃圾收集器交叉引用
class class1
{
class2 m_RefClass2;
}
class class2
{
class1 m_RefClass1;
}
class class3
{
public class3()
{
class1 obj1 = new class1();
class2 obj2 = new class2();
obj1.m_RefClass2 = obj2;
obj2.m_RefClass1 = obj1;
}
}
是的。 .NET垃圾收集器不仅仅是对引用进行计数(在这种情况下,这种安排会导致两个类彼此保持联系)。任何不“根”的对象(意味着没有从GC根对象到对象的引用路径)符合收集条件。
打我16秒 – 2010-05-05 17:50:36
如果我有一个镍每次我听说过! – 2010-05-05 17:51:08
THNX!还有一件事 - GC何时决定释放这些资源?它是否会出现突变或罕见(如关闭程序时) – 2010-05-05 18:54:08
它被称为“循环参考”,谷歌好。第一击:http://*.com/questions/400706/circular-references-cause-memory-leak – 2010-05-05 18:40:27