c# garbage collection
如果需要在将内存垃圾回收完毕之后再进行后面的操作的话,一般使用如下的方式:
GC.Collect(); //通知garbage collector 回收
GC.WaitForPendingFinalizers();//等待垃圾收集完毕
在WaitForPendingFinalizers方法中,会暂时挂起调用该方法的线程,知道垃圾收集完毕。
Finalize方法是Object类定义的一个virtual方法,一般用于释放非托管对象的时候CLR来调用它作一些定制的资源释放处理。我们不能通过覆写
Finalize方法来让CLR调用它,而是通过类似C++的析构函数的方式。而是通过“~类名”这样的方式。
Finalization的过程相对比较消耗时间,它是通过将实现Finalize方法的对象加入一个Finalization队列,然后在垃圾回收的时候从队列中取出
每个对象然后调用Finalize.
IDisposable接口的方式则不相同。通过实现IDisposable,对象使用者通过调用Dispose方法不需要将需要释放资源的对象放入Finalization队列,也
不需要等待GC来调用Finalize方法。可以说是一种使用完即释放的方式。
某些类如FileStream既包含有Dispose方法也包含有Close方法,这两个方法实际上是做的同样的事情。在有Dispose方法的前提下一般用Dispose方法
。

浙公网安备 33010602011771号