C#垃圾收集器交叉引用

时间:2010-05-05 17:47:09

标签: .net garbage-collection

垃圾收集器是否会为交叉引用的对象/类释放资源,这些资源不再从主程序引用。 例如 -

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

1 个答案:

答案 0 :(得分:6)

是。 .NET垃圾收集器不仅仅是计算引用(在这种情况下,这样的安排会导致两个类彼此保持活动)。任何没有“root”的对象(意味着没有来自GC根对象的对象的引用路径)都有资格进行收集。