垃圾回收只是回收托管堆内存,
dipose 和finalize 操作针对的是非托管资源,不属于垃圾回收范畴
只不过垃圾回收之前会先调用finalize操作,
这样理解对吧?

解决方案 »

  1.   

    释放的是.net无法管理的内存以及资源
    CLR执行的代码是托管代码,除此之外都是非托管代码
    托管代码的堆上的垃圾内存可由GC自动回收,非托管代码中堆上的垃圾内存必须程序员自己负责释放、回收
    在.NET的对象中实际上有两个用于释放资源的函数:Dispose和Finalize。Finalize的目的是用于释放非托管的资源,而Dispose是用于释放所有资源,包括托管的和非托管的。
      

  2.   

    如果一个含有非托管资源的类 没有实现dispose 和 finalize,或者其中没有对非托管资源进行释放,会有什么后果
      

  3.   


    对于.net托管对象,不存在真正的“内存溢出”问题。对于非托管资源,你当然要手动释放。
      

  4.   

    http://www.cnblogs.com/c2303191/articles/1065675.html