Dispose资源释放概述
Dispose()方法强调了"清理资源"。
而且在完成资源的清理之后,对象本身的内存并不会释放。
所以,"Dispose一个对象" 或 "Close"一个对象真正的意思是:
清理对象中包含的资源(例如:它的字段所引用的对象),然后等待垃圾回收器自动回收该对象本身占用的内存。(这时才是真正释放)
静态方法:GC.SuppressFinalize(this);
该方法阻止垃圾回收器为该对象(资源)调用析构器,因为对象现在已经被清理了。
(告诉GC不要调用该对象的析构函数)
垃圾回收不一定在对象不再需要之后立即进行。
垃圾回收可能是一个代价比较高的过程,所以"运行时"只有在觉得必要的时候才进行垃圾回收。(例如:在它认为可用内存不够的时候)
然后,它会回收尽可能多的内存。
可以调用静态方法:GC.Collect(),从而在一个程序中调用垃圾回收器,然而,除非在极少情况下都不建议这样做。
GC.Collect()方法将启动垃圾回收器,但具体的回收过程是异步进行的。(放在一个特殊的队列)
当方法结束时,开发人员仍然不知道对象是否已经清理。
请在运行时环境决定垃圾回收的最佳时机。(交给CLR)
垃圾回收器的一个特点:开发人员不知道对象的销毁顺序。
只有当对象进行垃圾回收的时候,才会运行析构器。
析构器最终肯定会执行,只是不能保证在什么时候执行。

浙公网安备 33010602011771号