我的一位同事確信Oracle的odp.net ado.net實現中存在內存泄漏。他寫了一個測試程序來測試這個理論,並調用處理每個對象以確定被多少內存被釋放後,執行以下操作:GC.Collect()和PerformanceCounter
PerformanceCounter p = new PerformanceCounter("Memory", "Available Bytes");
GC.Collect();
GC.WaitForPendingFinalizers();
float mem = p.NextValue();
得到的性能值與檢索到的值進行比較在處理物體之前。這會產生準確的結果嗎?
不,這不是內存管理器的工作原理。在經歷了分配虛擬內存空間的麻煩之後,它將釋放的塊放回空閒塊列表中,準備稍後再次使用。 –
您是否嘗試過使用ProcessExplorer來監控您的進程中的.NET內存和系統內存使用情況?你還沒有說明什麼樣的內存在泄漏...... – GregC
我們不知道什麼類型的內存泄漏,這是測試原因的一部分,以確認是否存在問題。我的問題是確認測試是否有效。 – zaq