C# 如何获得任务管理器中显示的应用程序内存使用率?

C# 如何获得任务管理器中显示的应用程序内存使用率?,c#,.net,memory,process,ram,C#,.net,Memory,Process,Ram,我试图获取应用程序的内存使用情况,但由于某些原因,我得到的大小与任务管理器中的不同 我正在使用: 任务管理器显示我的应用程序占用了45mb,而当我在代码中使用它时,我得到了85mb 如何获得与任务管理器中相同的大小(不使用wmi)假设您在“任务管理器”中查看了错误的列,或者在Process类中使用了错误的属性 我想你是在找工作集64而不是私有内存64privatemorysize64是为进程分配的虚拟内存量,而不是物理内存。对于物理内存,请使用工作集64 另外,在访问process类中的任何动

我试图获取应用程序的内存使用情况,但由于某些原因,我得到的大小与任务管理器中的不同

我正在使用:

任务管理器显示我的应用程序占用了45mb,而当我在代码中使用它时,我得到了85mb
如何获得与任务管理器中相同的大小(不使用wmi)

假设您在“任务管理器”中查看了错误的列,或者在Process类中使用了错误的属性

我想你是在找
工作集64
而不是
私有内存64
privatemorysize64
是为进程分配的虚拟内存量,而不是物理内存。对于物理内存,请使用
工作集64

另外,在访问process类中的任何动态属性之前,您需要调用
process.Refresh()
,因为它被大量缓存

process.Refresh();
_data.MemoryUsed = (process.WorkingSet64).ConvertBytesToMegabytes().ToString(CultureInfo.InvariantCulture);

尝试一下下面的代码,可能会有所帮助

PerformanceCounter PC = new PerformanceCounter();
PC.CategoryName = "ServerProcess";
PC.CounterName = "Working Set - Private";
PC.InstanceName = JSP[0].ProcessName; //Process
RAM_memorysize = PC.NextValue();            //float RAM_memorysize;
PC.Close();
PC.Dispose();

以上这些都不适合我。因此,我找到了这个解决办法

汉斯·帕桑写的,做得很好

string prcName = Process.GetCurrentProcess().ProcessName;
var counter_Exec = new PerformanceCounter("Process", "Working Set - Private", prcName);
double dWsp_Exec =  (double)counter_Exec.RawValue / 1024.0; <---that is the value in KB
string prcName=Process.GetCurrentProcess().ProcessName;
var counter_Exec=新的性能计数器(“进程”、“工作集-专用”,prcName);

double dWsp_Exec=(double)counter_Exec.RawValue/1024.0;调用
process.Refresh()
之前添加
process.PrivateMemorySize64
没有帮助,获得了与以前相同的值如果您遇到了这些问题,我强烈建议您放弃Task Manager,用Sysinternals中的process Explorer替换它。查看此视频我正在使用Windows 7 64 biti添加了代码的屏幕截图和发生的事情我添加了刷新并在调试时上载了代码,因为您看到内存大小不同,内存大小也没有剧烈变化它在45-47mb之间非常稳定~调试时不要检查进程内存。从调试器中运行进程并进行检查。因为调试visual studio时将为您运行宿主进程YourProcess.vshost.exe。这可能会引起混乱。我通过在控制台中打印输出(在VisualStudio中运行)对此进行了测试,效果非常好。另外,将
Sleep(200)
更改为
Sleep(1000)
,这样它将与任务管理器同步。我尝试在没有visual studio和调试的情况下进行调试,但仍然不正确,我在任务管理器中没有看到vshost。正如我所说的,您仍然在任务管理器中查看错误的列。您需要检查“工作集”列。如果您需要专用工作集检查,则WorkingSet64显示114mb,PrivateMemorySize64显示80-84mb