Dispose资源释放概述

Dispose()方法强调了"清理资源"。

而且在完成资源的清理之后,对象本身的内存并不会释放。

所以,"Dispose一个对象" 或 "Close"一个对象真正的意思是:

清理对象中包含的资源(例如:它的字段所引用的对象),然后等待垃圾回收器自动回收该对象本身占用的内存。(这时才是真正释放)

  

静态方法:GC.SuppressFinalize(this);

该方法阻止垃圾回收器为该对象(资源)调用析构器,因为对象现在已经被清理了。

(告诉GC不要调用该对象的析构函数)

 

垃圾回收不一定在对象不再需要之后立即进行。

垃圾回收可能是一个代价比较高的过程,所以"运行时"只有在觉得必要的时候才进行垃圾回收。(例如:在它认为可用内存不够的时候)

然后,它会回收尽可能多的内存。

 

可以调用静态方法:GC.Collect(),从而在一个程序中调用垃圾回收器,然而,除非在极少情况下都不建议这样做。

GC.Collect()方法将启动垃圾回收器,但具体的回收过程是异步进行的。(放在一个特殊的队列)

当方法结束时,开发人员仍然不知道对象是否已经清理。

请在运行时环境决定垃圾回收的最佳时机。(交给CLR)

 

垃圾回收器的一个特点:开发人员不知道对象的销毁顺序。

 

只有当对象进行垃圾回收的时候,才会运行析构器。

析构器最终肯定会执行,只是不能保证在什么时候执行。

 

posted @ 2016-09-10 19:08  茗::流  阅读(324)  评论(0)    收藏  举报
如有雷同,纯属参考。如有侵犯你的版权,请联系我。