我正在自动化一些分析任务,并希望实时记录堆空间和生成大小。对于我需要的东西,分析 API似乎非常复杂,而且它似乎在监听各个分配和集合,这对我来说并不重要。分析工具当然有很大的帮助,但我一直在寻找更灵活、可编程的接口。
Jeremy
问问题
18415 次
3 回答
39
术语“当前内存使用情况”的定义有点松散。你是说工作集吗?无论是什么意思,您都可以使用流程类中的不同属性(例如VirtualMemorySize
、WorkingSet
、PrivateMemorySize
等)来检索它。
long workingSet = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64;
于 2009-01-20T12:47:49.147 回答
6
很多这些东西都有性能计数器,如果你不能使用 Perfmon,你可以通过 Diagnostics API 访问计数器。
于 2009-01-20T12:46:54.530 回答
3
一旦我不得不在遗留代码中找到内存泄漏,我就遇到了这个解决方案:使用适当的参数作为进程启动“任务列表”,然后从流或文件中读取输出。
例如
tasklist /fi "IMAGENAME eq notepad++.exe" /FO CSV /NH
输出是:
"notepad++.exe","7132","Console","1","21.004 K"
不是那么优雅,但是可以在 Windows 上的任何编程语言中使用,而无需额外的依赖(在我的例子中是 C++/Qt)。
于 2014-11-04T14:24:06.613 回答