垃圾收集器是否会为交叉引用的对象/类释放资源,该对象/类不再从主程序中引用。
例如 -
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 根对象到该对象的引用路径)都有资格进行收集。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)