我已經實現了Dispose
...無處不在支持它。我正在刪除所有事件處理程序。我沒有調用本地代碼。如何確定我的應用程序的哪部分內存泄漏?
我甚至遍歷每個字典,並將值設置爲null,並在所有項目上調用.Clear()。
問:
我怎麼能揣摩出我的代碼泄漏?
我第一次在隔夜的測試中發現泄漏。它使用固定數量的內存,因此它應該增長,然後變得有點靜態。然後我做了前臺線程顯示內存這樣的:
if (key.KeyChar == 'g')
{
long pre = GC.GetTotalMemory(false);
long post = GC.GetTotalMemory(true);
Console.WriteLine("{2} Pre:{0} \tPost:{1}", pre, post, System.DateTime.Now);
GC.Collect();
}
我跑了好幾次(在幾個小時內,在同時按下「G」一次),並看到了越來越多。
您是否在任何時候與COM對象進行交互? –
是什麼讓你覺得它泄漏? – vcsjones
將您的應用程序浸入水中並查看氣泡出來的位置。 – John