Dot Net GC(二)

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在运行时不要撤销这个类。这样,就可以在对象已没用的时侯立即释放它。

 

 

posted on 2009-01-07 18:09  肖蕾  阅读(933)  评论(1编辑  收藏  举报

导航

Web Site Hit Counter