2

我正在使用 .NET 4.5 用 C# 编写一个程序,这将允许我监视特定进程的内存、CPU 和网络使用情况,然后根据我的需要绘制数据图表。

为了获取特定进程的内存使用情况,我正在检查该对象的PrivateMemorySize64属性Process。我希望看到该进程使用的私有内存,但它显示的是 Commit 中的数量,正如 Windows 资源监视器所确认的那样。

我的问题是:

1)有人知道为什么会发生这个错误吗?2)有解决办法吗?3)如果没有修复,是否有另一种直接的方法可以获得为进程保留的私有内存?

以下是我的代码的相关部分:

using System;

// I add all the open Processes to an array
Process[] localAll = Process.GetProcesses();

// I then add all the processes to a combobox to select from
// There's a button that updates labels with requested info

Process[] p = Process.GetProcessesByName(comboBox1.SelectedItem.ToString());
label1.Text = p[0].PrivateMemorySize64.ToString() + " bytes";
4

1 回答 1

1

根据您的评论,您说您正在寻找私人工作集。从这个链接中可以看出如何计算私有工作集(内存)? 它确实不是 Process 类的一部分。您必须改为使用性能计数器。

从另一个答案复制并粘贴,以防万一它因某种原因被删除。

using System;
using System.Diagnostics;

class Program {
    static void Main(string[] args) {
        string prcName = Process.GetCurrentProcess().ProcessName;
        var counter = new PerformanceCounter("Process", "Working Set - Private", prcName);
        Console.WriteLine("{0}K", counter.RawValue / 1024);
        Console.ReadLine();
    }
}
于 2014-05-07T22:34:08.810 回答