我有一個應用程序,它在運行時需要輪詢它自己的內存使用情況。如果它能夠列出每個實例化對象的內存使用情況,這將是理想的。我知道這可以通過WMI來實現,但是我希望有一些不依賴於WMI的東西。輪詢C#應用程序在運行時的內存使用情況?
19
A
回答
29
兩個功能,你可能會發現有用的是:
GC.GetTotalMemory();
Process.PagedMemorySize64();
我的經驗是,GC.GetTotalMemory()並不十分可靠。它經常報告的內存使用量比實際的內存使用量要小得多。我看到它報告說,當我的程序在16 GB的機器上內存不足時,我只用了8 GB。
我還沒有測試過Process.PagedMemorySize64,雖然它看起來很有前途。
2
你可以聽上性能計數器,這將給你很多數據(GC活動/物理內存使用/託管堆等)
如果你需要更進一步您可能要附加一個調試器對你自己來說,這真的是非常棘手,因爲你將不得不產生一個新的過程並與之通信,並且穿過你的記憶。
2
您可以從System.Diagnostics(Process類)獲得有關您的進程的粗略粒度。 http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx。
沒有任何'每個對象'的東西,但至少有一些關於你的過程的內存信息可以被收集。
6
Process proc = Process.GetCurrentProcess();
Logger.Info(proc.PeakWorkingSet64/1024 + "kb");
0
也許
Windows::System::Diagnostics::ProcessDiagnosticInfo::GetForCurrentProcess();
相關問題
- 1. Android正在運行的應用程序內存使用情況
- 2. 如何獲取c#應用程序的內存使用情況?
- 3. Windows上C++應用程序的內存使用情況
- 4. Linux c應用程序內存使用情況
- 5. Solaris上運行時進程的當前內存使用情況
- 6. 使用winform應用程序的內存使用情況
- 7. 應用程序轉到背景時的內存佔用情況
- 8. 在heroku上跟蹤應用程序內存使用情況
- 9. 獲取應用程序的內存使用情況的錯誤
- 10. Android中的應用程序的內存(CPU)使用情況
- 11. 在運行時動態確定內存使用情況
- 12. 測量分佈式應用程序的內存使用情況
- 13. WinCE應用程序的內存使用情況
- 14. Web應用程序的內存使用情況HttpRuntime.Cache
- 15. 如何分析應用程序的內存使用情況
- 16. Java Web WebLogic Server上的應用程序內存使用情況
- 17. 如何限制iOS應用程序的內存使用情況
- 18. 關於Java應用程序的內存使用情況
- 19. 簡單的應用程序內存使用情況
- 20. 空應用程序中的內存使用情況
- 21. 測量ios應用程序的內存使用情況
- 22. 如何在不分配內存的情況下測量.net應用程序的內存使用情況?
- 23. 在C應用程序中剖析最大內存使用情況 - linux
- 24. 黑莓應用程序 - 獲取應用程序內存使用情況統計
- 25. 如何在運行時檢查Flash應用程序的性能和內存使用情況?
- 26. WebClient在長時間運行過程中的內存使用情況
- 27. Flex應用程序內存使用情況
- 28. .NET應用程序內存使用情況Visual Studio 2005
- 29. 瞭解應用程序內存使用情況
- 30. 優化應用程序內存使用情況
我認爲Process.PrivateMemorySize64()是使用有源內存的使用是正確的。 – maxfridbe 2009-02-24 21:11:12