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

 

 

相关文章:

  • 2021-12-09
  • 2021-11-25
  • 2021-09-24
  • 2022-12-23
  • 2021-10-23
  • 2021-07-08
  • 2022-01-15
  • 2021-12-03
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-08-10
  • 2021-04-07
  • 2022-12-23
  • 2022-01-03
  • 2021-09-25
相关资源
相似解决方案