我有这样的代码:
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耗尽大量内存来实例化时,从我的观察来看,程序吃掉的内存似乎没有被释放.
如果有其他对象指向它,可以释放内存吗?
IDisposable与回收托管内存无关.IDisposable允许类型释放未由垃圾收集处理的资源,例如句柄等.对于普通的.NET类型,垃圾收集器将在不再引用对象时处理回收内存.
| 归档时间: |
|
| 查看次数: |
216 次 |
| 最近记录: |