C#垃圾收集器交叉参考 [英] C# garbage collector cross reference

查看:99
本文介绍了C#垃圾收集器交叉参考的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

威尔垃圾收集免费资源跨引用的对象/类,它不再从主程序中引用。 例如 -

 类class1
{
    Class2的m_RefClass2;
}
类class2
{
    class1的m_RefClass1;
}

类3类
{
    公众3类()
    {
        CLASS1 OBJ1 =新1级();
        CLASS2 OBJ2 =新的Class2();
        obj1.m_RefClass2 = obj2的;
        obj2.m_RefClass1 = OBJ1;
    }
}
 

解决方案

是的。在.NET垃圾收集器不是简单地计数的参考值(在这种情况下,这样的安排将导致这两个类,以保持彼此活着)。这是不是根(即没有参考路径,从GC根对象的对象)的任何对象是符合回收。

Will garbage collector free resources for cross referenced object/class, which is no longer referenced from main program. For example -

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

解决方案

Yes. The .NET garbage collector is not simply counting references (in which case such an arrangement would cause both classes to keep each other alive). Any object that is not "rooted" (meaning that there is no reference path to the object from a GC root object) is eligible for collection.

这篇关于C#垃圾收集器交叉参考的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆