有没有办法检索 C# 应用程序的当前内存使用情况?
Posted
技术标签:
【中文标题】有没有办法检索 C# 应用程序的当前内存使用情况?【英文标题】:Is there a way to retrieve a C# app's current memory usage? 【发布时间】:2010-10-02 10:43:37 【问题描述】:我正在自动化一些分析任务,并希望实时记录堆空间和生成大小。 profiling API 对于我需要的东西来说似乎非常复杂,而且它似乎在监听个人分配和集合,这对我来说并不重要。分析工具当然有很大的帮助,但我一直在寻找更灵活、可编程的界面。
【问题讨论】:
【参考方案1】:一旦我不得不在遗留代码中发现内存泄漏,我就遇到了这个解决方案: 以适当的参数启动“tasklist”作为进程,并从流或文件中读取输出。
例如
tasklist /fi "IMAGENAME eq notepad++.exe" /FO CSV /NH
输出是:
"notepad++.exe","7132","Console","1","21.004 K"
不是那么优雅,但可以在 Windows 上使用任何编程语言而无需额外依赖(在我的例子中是 C++/Qt)。
【讨论】:
【参考方案2】:“当前内存使用情况”一词的定义有点松散。你是说工作集吗?无论是什么意思,您都可以使用流程类中的不同属性(例如VirtualMemorySize
、WorkingSet
、PrivateMemorySize
等)来检索它。
long workingSet = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
【讨论】:
【参考方案3】:有很多这类东西的性能计数器,如果你不能使用 Perfmon,你可以通过诊断 API 访问计数器。
【讨论】:
以上是关于有没有办法检索 C# 应用程序的当前内存使用情况?的主要内容,如果未能解决你的问题,请参考以下文章
是否可以在 C# 中从我的 YouTube 数据 API v3 检索当前配额使用情况?