【问题标题】:How to get Committed Memory in Windows Server 2012 using .NET如何使用 .NET 在 Windows Server 2012 中获取承诺内存
【发布时间】:2016-02-01 15:51:14
【问题描述】:

这是我获得总内存和已用内存的方式:

PerformanceCounter ramAvailableCounter = new PerformanceCounter("Memory", "Available MBytes");
var ramUsedMB = ramAvailableCounter.NextValue();

var ramTotalMB = new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMemory / 1024 / 1024;

var ramPercentageLeft = (ramUsedMB * 100) / ramTotalMB;



但是我怎样才能得到下图所示的“已提交”内存呢?
不幸的是,当只有大约 15GB 可用空间时,我们使用的应用程序会引发异常,我想在足够接近时发送通知。

【问题讨论】:

  • 当有 15 GB 可用内存时,为什么 anything 会抛出异常?即使抛开虚拟内存的现实,这也完全没有意义。发生错误时的例外情况。即使对于要求最苛刻的应用程序,15 GB 也不是严重的内存不足错误。无论如何,你不会通过试图猜测它来击败一个设计糟糕的应用程序。只需抓住这个愚蠢的异常并处理它。
  • @CodyGray 谢谢...这是处理数亿条记录的 BI 应用程序。所以 15GB 是不够的,它实际上使用大约 45GB 来执行完全重新加载;)

标签: c# .net memory-management ram


【解决方案1】:

可以这样做:

PerformanceCounter percCommittedBytesInUseCounter = new PerformanceCounter("Memory", "% Committed Bytes In Use");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-23
    • 1970-01-01
    • 2014-08-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 1970-01-01
    相关资源
    最近更新 更多