繁体   English   中英

有没有办法检索C#app的当前内存使用情况?

[英]Is there a way to retrieve a C# app's current memory usage?

我正在自动执行一些分析任务,并希望实时记录堆空间和生成大小。 对于我需要的内容, 分析API似乎非常复杂,它似乎在监听单个分配和集合,这对我来说并不重要。 分析工具当然是一个很好的帮助,但我一直在寻找一个更灵活,可编程的界面。

“当前内存使用”这个术语有点松散定义。 你的意思是工作集吗? 无论它意味着什么,您都可以使用流程类中的不同属性(如VirtualMemorySizeWorkingSetPrivateMemorySize等)来检索它。

long workingSet = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;

有许多这些东西的性能计数器,如果你不能使用Perfmon,你可以通过Diagnostics API访问计数器。

一旦我不得不在遗留代码中发现内存泄漏,我就会遇到这样的解决方案:使用适当的参数作为进程启动“tasklist”,并从流或文件中读取输出。

例如

tasklist /fi "IMAGENAME eq notepad++.exe" /FO CSV /NH

输出是:

"notepad++.exe","7132","Console","1","21.004 K"

不是那么优雅,但适用于Windows上的任何编程语言而没有额外的依赖性(在我的例子中是C ++ / Qt)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM