在任务管理器 C# 中提交进程的大小

Posted

技术标签:

【中文标题】在任务管理器 C# 中提交进程的大小【英文标题】:Commit size of a process in Task Manager C# 【发布时间】:2017-10-19 06:06:13 【问题描述】:

我需要在 C# 中获取进程的“提交大小”(Windows 任务管理器 > 详细信息)。

乍一看,Process 类不提供相关属性。 有人可以帮帮我吗?

已编辑

 private static void ShowCommitSize(string processName)
    
        Process process = Process.GetProcessesByName(processName).FirstOrDefault();
        if (process != null)
        
            var pagedMemMb = ConvertBytesToMegabytes(process.PagedMemorySize64);
            Console.WriteLine(process.ProcessName + "\t" + process.Id + "\t" + Math.Round(pagedMemMb, 3) + " MB");
        
        Console.ReadLine();
        

    static double ConvertBytesToMegabytes(long bytes)
    
        return (bytes / 1024f) / 1024f;
    

输出

我计算的提交大小与任务管理器中的“提交大小”之间存在差异。有什么想法吗?

解决方案

private static void ShowCommitSize(string processName)
    
        var process = Process.GetProcessesByName(processName).FirstOrDefault();
        if (process != null)
        
            var memKb = ConvertBytesToKilobytes(process.PagedMemorySize64);
            Console.WriteLine(process.ProcessName + "\t" + process.Id + "\t" + memKb.ToString("N") + " K");
        
        Console.ReadLine();
        

    static double ConvertBytesToKilobytes(long bytes)
    
        return (bytes / 1024f);
    

【问题讨论】:

Available pagefile size / virtual memory的可能重复 【参考方案1】:

此值在 PagedMemorySize64 属性中。该文档提到这是“页面文件大小”进程性能计数器,并且在here 上记录了这在 Vista/2008 上的任务管理器中被称为“提交大小”(我假设是较新的操作系统)。

【讨论】:

谢谢!我编辑了我的问题,并使用了 PagedMemorySize64 属性。计算出的 Commit Size 与在任务管理器中看到的值之间仍然存在差异。有什么想法吗? @BertAR 你问的是哪一部分差异? 124552 KB = 121.6 Mb。您是在询问 0.6 Mb 还是错误地将 kB 与 Mb 进行比较?屏幕截图之间的值是否发生了变化? 感谢您的快速回复!的确,我的转变是错误的。祝你有美好的一天。 @BertAR 我现在正在调查这个。你的转换有什么问题?我想我知道问题出在哪里,但我想先确定一下,然后再将其添加到答案中。

以上是关于在任务管理器 C# 中提交进程的大小的主要内容,如果未能解决你的问题,请参考以下文章

任务管理器的内存提交大小是啥意思?

C# - 在任务管理器中打开应用程序作为第二个进程

C#:如何在我的 PC 上列出与任务管理器相同的工作进程(不像应用程序选项卡)

任务管理器cpu核数更改方法

c# 获取某个进程的CPU使用百分百(类似任务管理器中显示CPU)

高手帮我解释几个WIN7任务管理器的简单问题!