我有一个需要大量内存的程序,一旦达到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(&pmcx), pmcx.cb);
现在pmcx.PrivateUsage
保存进程的VM Size.