C# 如何使用.NET在Windows Server 2012中获取提交内存

C# 如何使用.NET在Windows Server 2012中获取提交内存,c#,.net,memory-management,ram,C#,.net,Memory Management,Ram,以下是我如何获得总RAM和已用RAM的方法: PerformanceCounter ramAvailableCounter = new PerformanceCounter("Memory", "Available MBytes"); var ramUsedMB = ramAvailableCounter.NextValue(); var ramTotalMB = new Microsoft.VisualBasic.Devices.ComputerInfo().TotalPhysicalMem

以下是我如何获得总RAM和已用RAM的方法:

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可用空间时抛出异常,我希望在足够接近时发送通知。


可以按以下方式进行:

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

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