是否有一个C#进程类';属性是否等于任务管理器内存列?

是否有一个C#进程类';属性是否等于任务管理器内存列?,c#,memory,process,taskmanager,C#,Memory,Process,Taskmanager,我知道进程类有许多与内存相关的属性,比如(私有)工作集(64)、私有内存单元(64)等等,。。。我试图得到它们的值并除以(1024*1024)得到它们的MB数。它们似乎都没有任务管理器内存列那样的值。是否有具有TM值的属性?否,进程上没有可用于获取任务管理器专用工作集的属性,但… 您可以从以下位置从性能计数器检索相同的值: 因为您可能不知道过程中可用的值并不代表相同的东西。私有工作集仅与由私有内存系统64测量的内存子集相关。看看答案 事实上,这真的取决于你想要实现什么 如果希望与任务管理器中的

我知道进程类有许多与内存相关的属性,比如(私有)工作集(64)、私有内存单元(64)等等,。。。我试图得到它们的值并除以(1024*1024)得到它们的MB数。它们似乎都没有任务管理器内存列那样的值。是否有具有TM值的属性?

否,进程上没有可用于获取任务管理器专用工作集的属性,但…

您可以从以下位置从性能计数器检索相同的值:

因为您可能不知道过程中可用的值并不代表相同的东西。私有工作集仅与由私有内存系统64测量的内存子集相关。看看答案

事实上,这真的取决于你想要实现什么

  • 如果希望与任务管理器中的值相同,请阅读性能计数器
  • 如果要测量应用程序使用的内存,应该使用进程属性。例如,如果希望知道无法与其他进程共享的内存,请使用
作为旁注,进程上所有“非64”内存相关属性都已过时。你也一定要读这本书

仅供参考,专用工作集与“任务管理器”或“专用工作集”列中显示的内容相关

您可以参考或a以了解每个任务管理器列的含义。

C#Process类没有PrivateWorkingSet属性
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();
    }
}