假設我創建了一個類,使對象使用大量內存,但沒有非託管資源:應歸入使用內存impmlement System.IDisposable的
class TestMemory
{
public int[] intarray = new int[1000000];
}
通常情況下,如果我創建一個對象這個類,並且在使用之後放棄所有對該對象的引用,垃圾收集器將最終負責釋放內存。
的問題是,它是不確定的,當垃圾收集器會做到這一點。它可能會需要幾秒鐘,也許是垃圾收集器之前甚至幾分鐘將釋放
假設我要經常重新創建此對象的內存,例如像這樣(我知道,MOT有效):
for (int i=0; i < 1E10; ++i)
{
List<TestMemory> myList = new List<TestMemory>();
for (int j=0; j < 400; ++j)
{
myList.Add(new TestMemory());
}
}
應該我擔心內存不足,或者當請求的內存超過當前可用時,垃圾收集器會執行額外的收集操作嗎?爲此託管代碼實施IDisposable是否明智?
請告訴,會是什麼'的Dispose()'覆蓋嗎?此外,在你的榜樣,沒有GC可以釋放任何內存(更不用提,它不會調用'Dispose',或以其他方式關心'IDisposable',反正) - 所有對象依舊可達雖然'myList'。 – delnan
好吧,我簡單的問題了一點,但假設我的課聚集其他非IDisposable的對象,那麼廢棄(布爾)可以設置其引用到零,或者如果我班有一個巨大的字典,它可以清除()這本詞典。 –