Dot Net GC(二)

本文介绍了.NET Framework中Finalize方法的基本概念及其对垃圾回收的影响。解释了如何通过重载Close方法和使用GC.SuppressFinalize()来优化性能。

http://www.cnblogs.com/xl696128/archive/2008/12/31/1366135.html 中已经对GC的概念和简单实现有了写介绍。

现在我聊聊GC的Finalize()方法。

     类object是.net架构中的其他类的一个基类,它的成员方法Finalize的作用是来保护类型。

     如果.net的运行时垃圾收集器打算将一个对象从内存中移除,就会调用该对象的撤消方法Finalize,以释放系统资源。

     每个需要清楚的对象都必须执行撤消。但是Finalize方法会影响性能:

            垃圾收集器并不按照一定的顺序来撤销对象,也并不保证每一个对象的撤销方法都能被正确的调用。

            如果被应该撤销的对象调用了一个暂时还不能撤销的对象,这个对象也不能撤销。

            如果同时有大量的对象要等待撤销,这将会极为耗费系统资源。。。。。

      所以,为了优化性能,在必须使用Finalize方法时,你可以重载方法Close,在要清除对象时就需要调用Close方法,从而强迫垃圾收集器调用清除对象,把该对象设为null。

     调用GC.SupressFinalize()方法,可以为你代码中的元数据设置一个标记,以告诉GC在运行时不要撤销这个类。这样,就可以在对象已没用的时侯立即释放它。

 

 

转载于:https://www.cnblogs.com/xl696128/archive/2009/01/07/1371312.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值