我有一个需要大量内存的程序,一旦达到 2GB 虚拟地址空间,它就会崩溃。 Sysinternals 进程资源管理器将其显示为“虚拟大小”列。 我如何用 C(或 C++)代码确定这个“虚拟大小”?
好的,我必须查询“虚拟字节”的性能计数器。 Perfmon 将查询字符串(或它的调用方式)显示为,例如,在我的德语 Win XP 安装中为 '\Process(firefox)\Virtuelle Größe'。
如何确定“当前进程”的查询字符串,是否有非本地化名称?
最佳答案
根据 MSDN: Memory Performance Information 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 大小。
关于c++ - 如何判断一个进程 "virtual size"(WinXP)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/548819/