2
我們使用Telerik TestStudio(visual studio plugin)進行自動測試。 這連接到我們的WPF應用程序執行測試,所以自動化作爲一個進程運行,而我們的應用程序運行另一個進程。 現在我想測量和確保我們沒有任何內存泄漏或模擬,我們希望在開發過程中儘早看到它,然後纔到達客戶。
要測量內存是沒有問題的。但.NET CLR內存堆大小似乎更加棘手。
這是相同的結果作爲Windows性能監視器可以得到我之後我。 (PERFMON.EXE)
我已經試過
垃圾收集器包含此信息爲我的過程,所以我不能用這個
var heap = GC.GetTotalMemory();
我曾嘗試是使用WMI類來得到這個,但沒有成功.. 有一個類intressting:Win32_PerfFormattedData_NETFramework_NETCLRMemory 所以我認爲我會試試看..
var searcher = new ManagementObjectSearcher(@"select * from Win32_PerfFormattedData_NETFramework_NETCLRMemory");
foreach (ManagementBaseObject baseObject in searcher.Get())
{
var heap0 = baseObject["HeapSize0"];
var heap1 = baseObject["HeapSize1"];
var heap2 = baseObject["HeapSize2"];
}
上面的問題是,Get()dos不會返回任何東西,如果我把斷點放在foreach循環的第一行,它不會進入。
問題
- 有沒有在C#這樣做的其他方式?
- 有沒有人試圖從以前的另一個過程中獲得此堆大小?
使用PerformanceCounter類。 –
感謝評論@HansPassant。我會檢查出來並返回結果。 –