我有這樣的代碼:如果有其他對象指向它,Dispose可以釋放內存嗎?
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();
}
}
的問題是,當我執行Main
,並B
消耗了大量的內存實例,並從我的觀察似乎是由程序吃掉內存不釋放。
可以配置真正自由的內存,如果有指向它的其他對象?當它決定它需要,所以「雪中送炭」是不相關的
您可能不應該在B中處理資源,除非它自己創建資源的副本或分配一個新資源。代碼編寫的方式,在同一對象上調用兩次CallB()會導致異常。 – 2009-07-01 07:22:30