【问题标题】:Garbage Collector asp.net垃圾收集器 asp.net
【发布时间】:2009-07-22 10:12:13
【问题描述】:

谁能解释一下。

垃圾收集器的算法是什么?

垃圾收集器如何在后台工作?

【问题讨论】:

    标签: asp.net garbage-collection


    【解决方案1】:

    GC 仅在堆满时发生。 垃圾收集器何时启动 运行,它假设 堆中的所有对象都是垃圾。 换句话说,它假设没有 应用程序的根指 堆中的任何对象。现在 垃圾收集器开始走 根和构建所有图 从根可以到达的对象。为了 例如,垃圾收集器可能 找到指向的全局变量 到堆中的一个对象。

    下图显示了一个堆 几个分配的对象,其中 应用程序根 1 直接指 对象 Obj1、Obj2 和应用程序 根 2 指的是 Obj4 和 obj5。所有的 这些对象成为 图形。添加对象 Obj2 时 应用程序根 1,收集器 注意到这个对象指的是 对象 Obj7 也被添加到 图形。收藏家继续走 通过所有可达对象 递归。



    ...续here

    这里有几个其他链接可以让您阅读垃圾收集:

    【讨论】:

      【解决方案2】:

      这是 GC 的基本思想。

      ============================================

      每个应用程序都有一组根。根标识存储位置,这些位置引用托管堆上的对象或设置为空的对象。

      例如:

      -- 应用程序中的所有全局和静态对象指针。 -- 线程堆栈上的任何局部变量/参数对象指针。 -- 任何包含指向托管堆中对象的指针的 CPU 寄存器。 -- 指向 Freachable 队列中的对象的指针

      活动根列表由即时 (JIT) 编译器和公共语言运行时维护,并且可供垃圾收集器的算法访问

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        • 2011-11-07
        • 2013-04-01
        • 2012-06-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多