关于.NET 垃圾回收机制

来源:互联网 发布:流程图绘制软件 编辑:程序博客网 时间:2024/05/22 07:45

垃圾回收机制的算法众多,不过.net中托管堆使用的是“标记-清除”算法 (一般垃圾回收会使用几种算法的结合 并不会单单只使用一种算法)所以就只重点关注这个算法 

标记——清楚 算法

1:基本概念

这个算法简单来说就是:从根对象开始便利 不能到达的对象删除

2:详细解释

一般在.NET上关于托管堆的垃圾回收有两个阶段

阶段一:暂停线程,遍历检查所有的对象,对所有可以访问的对象做标记

阶段二:遍历所有对象,对没有标记的对象直接释放(对就是直接释放,这里其实也就出现标记-清除算法的不足之处,因为可以释放的对象很有可能处于堆内存的中间,直接释放会照成过多的内存碎片)

例如下面的图片:黑色代表可以释放,蓝色代表不能释放