为什么我在对象使用完后将他付为NULL用垃圾回收GC.Collect()回收不了内存,程序一直在增加,实现IDisposable接口时,
 private void Dispose(bool disposing)
        {
            if(!this.disposed)
            {
                if(disposing)
                {
//这里没有资源释放
                }
            }
            disposed = true;         
        }
内存空间也没有释放出来,有什么好的方法帮我解决呢?

解决方案 »

  1.   

    1:手工强制进行垃圾回收;
    2:增加垃圾回收的压力。
    3:不要用那么复杂的方法Dispose()
    直接:
    using(SomeThingNeedToBeDisposed)
    {
      //..使用你的对象
    }
    4:说明一下:赋NULL并不一定会导致删除对象,更不会立即导致GC动作。
      

  2.   

    附上操作方式:
    1:手工强制回收
    GC.Collect()2:增加内在压力
    GC.AddMemoryPressure()具体用法及参数说明参考MSDN。
      

  3.   

    置为null只会加快垃圾回收(如果这个对象只被这一个引用的话) 而不是马上
      

  4.   

    在说GC的回收。并不是 你赋予了null就立刻回收的。建议用using()可以立即回收
      

  5.   

    using不是针对对象都可以使用,不许继承了IDisposable接口的类才能使用using(),我在增加内存压力 
    GC.AddMemoryPressure()试试, "程序上的问题"我的这个对象中包括了其他的对象引用,调用方法时使用了ref ,应该不会有影响吧!
      

  6.   

    程序上的问题"我的这个对象中包括了其他的对象引用,调用方法时使用了ref ,应该不会有影响吧!
    你给这个对象为null。你引用的其他对象就没有处理了。也就是说。其他对象分配的内存就没有办法回收了。结果就成了“死”内存了。你的程序内存肯定回在增加了
    建议你先释放掉其他对象的内存后,在释放你这个对象的内存
      

  7.   

    实现IDisposable接口后.比如给这个对象为null.那么.GC虽然不会立即回收内在,但它不会自动回收?
    一定要手动执行dispose方法还是?请教高手.
      

  8.   

    要立即用
    using
    {
    }