垃圾收集器是否会为交叉引用的对象/类释放资源,这些资源不再从主程序引用。 例如 -
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;
}
}
答案 0 :(得分:6)
是。 .NET垃圾收集器不仅仅是计算引用(在这种情况下,这样的安排会导致两个类彼此保持活动)。任何没有“root”的对象(意味着没有来自GC根对象的对象的引用路径)都有资格进行收集。