关于.NET 垃圾回收机制
2017-08-14 15:00
429 查看
垃圾回收机制的算法众多,不过.net中托管堆使用的是“标记-清除”算法 (一般垃圾回收会使用几种算法的结合 并不会单单只使用一种算法)所以就只重点关注这个算法
标记——清楚 算法
1:基本概念
这个算法简单来说就是:从根对象开始便利 不能到达的对象删除
2:详细解释
一般在.NET上关于托管堆的垃圾回收有两个阶段
阶段一:暂停线程,遍历检查所有的对象,对所有可以访问的对象做标记
阶段二:遍历所有对象,对没有标记的对象直接释放(对就是直接释放,这里其实也就出现标记-清除算法的不足之处,因为可以释放的对象很有可能处于堆内存的中间,直接释放会照成过多的内存碎片)
例如下面的图片:黑色代表可以释放,蓝色代表不能释放
标记——清楚 算法
1:基本概念
这个算法简单来说就是:从根对象开始便利 不能到达的对象删除
2:详细解释
一般在.NET上关于托管堆的垃圾回收有两个阶段
阶段一:暂停线程,遍历检查所有的对象,对所有可以访问的对象做标记
阶段二:遍历所有对象,对没有标记的对象直接释放(对就是直接释放,这里其实也就出现标记-清除算法的不足之处,因为可以释放的对象很有可能处于堆内存的中间,直接释放会照成过多的内存碎片)
例如下面的图片:黑色代表可以释放,蓝色代表不能释放
相关文章推荐
- 关于更清楚地了解.net的垃圾回收机制
- 关于更清楚地了解.net的垃圾回收机制
- 关于.Net中垃圾回收机制的理解:
- .Net程序的内存管理和垃圾回收机制
- .NET垃圾回收机制
- 第十三天 :关于java中垃圾回收机制的总结
- 【译】.Net 垃圾回收机制原理(二)
- .NET垃圾回收机制(一)
- 关于今天面试回答的不好的两个问题(垃圾回收机制和对象的排序)
- .Net中的垃圾回收机制
- .NET垃圾回收机制 转
- 浅谈关于C#的垃圾回收机制
- .NET垃圾回收机制(二)
- 关于 PHP 垃圾回收机制的一点点资料
- .NET垃圾回收机制
- .net的垃圾回收机制[转]
- 有关于.net的垃圾回收的一个问答
- .net中的垃圾回收机制
- .net 垃圾回收机制
- 如何理解.net中的垃圾回收机制