Effective C# 学习笔记(基础篇).NET 资源管理基础
2011-07-04 23:05 小郝(Kaibo Hao) 阅读(331) 评论(0) 编辑 收藏 举报.net 框架中的GC回收机制是这样的,首先GC会通过一个应用对象树形结构来管理所有被应用引用的对象,对于没有被应用引用的对象将被垃圾回收,而其垃圾回收对象的顺序是没有被控制的。GC跑在自己的线程上,其每次运行都会整理堆空间,使未使用的堆空间变得连续。
基于以上机制,对于Finalizers析构来说,其析构执行的时间也是不确定的,所以尽量不要在托管代码中使用Finalize处理析构事宜,但可以析构非托管对象。
Generation标记
由上一垃圾回收后产生的新对象其 Generation 值为0 (收集初始值:256K)
由上一垃圾回收后第一次存活下来的对象其Generation的值为1 (收集初始值:2M)
由两次或以上垃圾回收后存活下来的对象其Generation的值为2 (收集初始值:10M)
0一般可能是 局部变量
1、2一般可能是成员变量 和 全局变量
而GC通过限制检查1、2值的对象的次数来提高回收效率 10%的几率检查1标记的对象,1%的几率检查2标记的对象
作者:小郝
出处:http://www.cnblogs.com/haokaibo/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://www.cnblogs.com/haokaibo/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。