我有一個應用程序,它在運行時需要輪詢它自己的內存使用情況。如果它能夠列出每個實例化對象的內存使用情況,這將是理想的。我知道這可以通過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. Windows上C++應用程序的內存使用情況
- 2. 如何獲取c#應用程序的內存使用情況?
- 3. Android中的應用程序的內存(CPU)使用情況
- 4. 空應用程序中的內存使用情況
- 5. 測量分佈式應用程序的內存使用情況
- 6. Java Web WebLogic Server上的應用程序內存使用情況
- 7. 測量ios應用程序的內存使用情況
- 8. Web應用程序的內存使用情況HttpRuntime.Cache
- 9. 如何在不分配內存的情況下測量.net應用程序的內存使用情況?
- 10. 如何在運行時檢查Flash應用程序的性能和內存使用情況?
- 11. 在C應用程序中剖析最大內存使用情況 - linux
- 12. 黑莓應用程序 - 獲取應用程序內存使用情況統計
- 13. iis 7.5應用程序池內存使用情況
- 14. Flex應用程序內存使用情況
- 15. .NET應用程序內存使用情況Visual Studio 2005
- 16. 在沒有AIR運行時文件的情況下運行AIR應用程序
- 17. 運行Django應用程序(使用gunicorn)時,Heroku在運行Django應用程序時沒有釋放內存
- 18. 如何在android命令中查找當前運行的應用程序內存使用情況以檢查其內存使用情況?
- 19. 應用程序:didFinishLaunchingWithOptions等同於應用程序已在運行的情況?
- 20. Android應用內存使用情況
- 21. iOS應用程序內存使用情況的正常行爲是什麼?
- 22. iOS9報告應用程序未在後臺運行時的應用程序背景使用情況
- 23. 比較.Net和VB6應用程序的內存佔用情況
- 24. 使用perfmon的應用程序池的日誌內存使用情況
- 25. 數據使用情況+應用程序數據使用情況
- 26. 在未安裝VB6的情況下運行VB6應用程序
- 27. Objective-C內存使用情況
- 28. C++指針內存使用情況
- 29. .NET運行時對象的內存佔用情況如何?
- 30. 在Java應用程序中分析內存使用情況的最佳方法?
我認爲Process.PrivateMemorySize64()是使用有源內存的使用是正確的。 – maxfridbe 2009-02-24 21:11:12