如何在Windows任务管理器中显示特定应用程序的内存使用情况?

时间:2014-05-31 11:14:04

标签: c# winforms

public static void getallmemoryusage(string processName)
{
    Process[] pprocessName = Process.GetProcessesByName(processName);//.GetCurrentProcess().ProcessName;
    var counter = new PerformanceCounter("Process", "Working Set - Private", processName);
    privateMemeory = string.Format("Private memory: {0}k", counter.NextValue() / 1024);
}

这里有一些问题:

  1. 我有一个变量Process [] pprocessName但我从不使用它。

  2. 现在我得到的值与任务管理器中的值不同。

  3. 在任务管理器中,我在程序中看到192.6MB,我看到197232。 现在我开始在游戏中使用应用程序(进程)现在在任务管理器中显示:219.0MB在我的程序224304中。

    为什么它现在具有相同的值,我应该如何处理Process [] pprocessName变量? 另外,我如何显示应用程序(进程)的百分比/ s,就像在任务管理器中显示它一样?

    我希望此方法将返回相同的内存使用值和相同的百分比值,就像在任务管理器中一样。

1 个答案:

答案 0 :(得分:0)

是。您可以通过WorkingSet64类的Process属性获取每个占用的实际内存量。

MSDN says:

  

为关联分配的物理内存量(以字节为单位)   过程

在您的情况下,pprocessName是名为“processName”的进程数组 所以你可以这样做:

foreach(var process in pprocessName)
{
  var memoryBytes = process.WorkingSet64;
  //...
}