如何确定一个过程“虚拟大小”(WinXP)?

我有一个需要大量内存的程序,一旦达到2GB的虚拟地址空间就会崩溃。 Sysinternals进程管理器将其显示为“虚拟大小”列。 我怎样才能用C(或C ++)代码来确定这个“虚拟大小”?

好吧,我必须查询“虚拟字节”的性能计数器。 Perfmon在我的德语Win XP安装中显示查询字符串(或其调用方式),例如' Process(firefox) VirtuelleGröße'。

如何确定“当前进程”的查询字符串,并且是否存在非本地化名称?


根据MSDN:内存性能信息PROCESS_MEMORY_COUNTERS_EX.PrivateUsage与Windows XP中任务管理器中的VM大小相同。 GetProcessMemoryInfo应该工作:

PROCESS_MEMORY_COUNTERS_EX pmcx = {};
pmcx.cb = sizeof(pmcx);
GetProcessMemoryInfo(GetCurrentProcess(),
    reinterpret_cast<PROCESS_MEMORY_COUNTERS*>(&pmcx), pmcx.cb);

现在pmcx.PrivateUsage保存进程的VM大小。


您查询性能计数器。
在win32 API中有一个完整的API,请在这里阅读。
如果您运行一个名为'perfmon.exe'的程序,您可以查看所有性能计数器


您可以使用性能计数器。 过程对象具有“虚拟字节”值。

链接地址: http://www.djcxy.com/p/80175.html

上一篇: How to determine a process "virtual size" (WinXP)?

下一篇: Measure memory usage of code unit