【问题标题】:How to get % Memory usage of a process using Performnace Counter in C#如何在 C# 中使用性能计数器获取进程的内存使用百分比
【发布时间】:2013-05-20 06:48:08
【问题描述】:

我想获取进程使用的内存百分比。 现在,我只能通过以下方式获取可用内存:

PerformanceCounter pc = new PerformanceCounter("Memory", "Available KBytes");

有没有办法得到想要的结果,可能是使用一些计算?请帮忙。

【问题讨论】:

  • “已用内存百分比”是什么意思?
  • 比如某个特定进程使用了​​多少内存百分比,您能否澄清一下“可用 MBytes”和“工作集”之间的区别。我注意到,TaskMgr 的输出显示为 Memory (Private Working Set)。?
  • 在 Windows 这样的按需分页虚拟内存操作系统上,这是一个没有意义的数字。可用内存量是一个高度动态的数字,由页面文件的大小设置。哪些 Windows 将根据需求增长和缩小。一个进程(工作集)使用的物理 RAM 量同样没有帮助,因为当其他进程需要 RAM 时,Windows 会按需映射页面。

标签: c# performance memory


【解决方案1】:

我记得在 Windows 性能监视器上执行此操作,以跟踪内存和 CPU 使用情况。

这个链接告诉你你是怎么做的

application pool memory usage monitor

【讨论】:

    【解决方案2】:

    对于当前(给定)进程,您可以从Process.WorkingSet64 属性中获取它分配的内存。已经有了总内存,你就可以了

    var percent = ((totalMemory - givenProcMemory)/totalMemory) * 100 ;
    

    如果这不是您的要求,请澄清。

    【讨论】:

    • 谢谢 Tigran,我会去的 :) 但是,请您澄清“可用 MBytes”和“工作集”之间的区别。我的意思是,我应该使用哪一个来监控服务器中所有进程的性能?
    • 我认为要进行精确计算,您必须阅读有关您将要调查的服务器和进程(ASP.NET Web 服务器?)。但“基本上”它必须返回机器上所有进程可用的内存量(是否被占用)
    猜你喜欢
    • 2015-07-12
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多