如果有其他对象指向它,可以释放内存吗?

Gra*_*ton 1 c#

我有这样的代码:

    public class A: IDisposable
    {
       public CPlusCode cPlusCode{get;set;}

    public void CallB()
    {
       using(bCode = new B(cPlusCode))
       {
              //do everything in B
       }
    }

   public void Dispose()
   {
         cPlusCode.Dispose();
    }
    }

    public class B: IDisposable
    {
    private CPlusCode cpp;
      public B(CPlusCode cPlus)
    {
    cpp= cPlus;
    }
    public void Dispose()
   {
   cpp.Dispose();
  //dispose everything
    }
    }

   public static void Main()
   {
             for(int i=0; i<100000; i++)
                {
                      var aObject = new A();
                     aObject .CallB();
                }
    }
Run Code Online (Sandbox Code Playgroud)

问题在于,当我执行Main并B耗尽大量内存来实例化时,从我的观察来看,程序吃掉的内存似乎没有被释放.

如果有其他对象指向它,可以释放内存吗?

Bri*_*sen 6

IDisposable与回收托管内存无关.IDisposable允许类型释放未由垃圾收集处理的资源,例如句柄等.对于普通的.NET类型,垃圾收集器将在不再引用对象时处理回收内存.