如何获取进程的确切非共享物理内存使用情况

问题描述 投票:0回答:1

当我对从Process.GetProcesses()生成的进程集合的WorkingSet64属性求和时,总和小于GlobalMemoryStatusEx指示的总物理内存使用量。

当我在进程上运行操作(例如,加载大文件或注入代码等)时,系统的物理内存会跳起来,但WorkingSet64总和不会跟踪它。

有没有办法获取特定进程的实际非共享物理内存使用情况?

c# .net
1个回答
0
投票

您可以获取该进程的私有工作集。

stackoverflow answer:

“私有工作集是一个进程使用的内存量,不能在其他进程之间共享,而工作集包括其他进程共享的内存。”

您可以使用ProcessCounter来访问此值。

Process thisProc = Process.GetCurrentProcess();
PerformanceCounter PC = new PerformanceCounter();

PC.CategoryName = "Process";
PC.CounterName = "Working Set - Private";
PC.InstanceName = thisProc.ProcessName;
int privateMemory = PC.Next()/1000; //this will be in KB.
© www.soinside.com 2019 - 2024. All rights reserved.