GC只能自动整理托管资源,如果你使用了非托管资源,那么你必须在dtor中(还有Dispose方法中)自己显式释放。
    如果你没有使用任何非托管资源,那么dtor基本上什么都不用做。

解决方案 »

  1.   

    1.C#的内存自动收集系统是对托管代码有效的,对于那些非托管代码,GC就无用了,如果不
      手动收集的话,会造成内存泄漏的。
    2.对于一些大型资源如数据库的连接,GDI对象,Windows句柄,独占文件锁等等对象,在资源不需要得时候可以立即被释放。以提高效率!
      

  2.   

    使用.NET自己的垃圾回收机制,回收垃圾很不及时,有时候需要实时回收,总是出现"来不及"的情况,会出现一个很高的内存消耗峰值.
    我们公司开发的产品就遇到过这种情况,我们使用了GC类的Collect方法即时回收,全OK了,几乎不会出现很大的峰值.