垃圾收集器asp.net

时间:2009-07-22 10:12:13

标签: asp.net garbage-collection

任何人都可以解释一下。

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

垃圾收集器如何在后台运行?

2 个答案:

答案 0 :(得分:2)

  

只有在堆满时才会发生GC。   当垃圾收集器启动时   跑步,它做出了假设   堆中的所有对象都是垃圾。   换句话说,它假设没有   该应用程序的根源是指   堆中的任何对象。现在   垃圾收集器开始走了   根和构建所有的图表   从根到达的对象。对于   例如,垃圾收集器可以   找到指向的全局变量   到堆中的对象。

     

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

alt text

...续here

以下是一些其他链接,可让您阅读垃圾收集:

答案 1 :(得分:1)

以下是GC的基本概念。

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

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

例如:

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

指向对象的指针

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