获取进程的ram使用情况

我一直在弄清楚我是如何获得进程的ram用法的。 (它目前消耗多少内存,而不是预留多少,或者最大或最小)

假设我有一个在后台运行的进程,Java.exe,允许使用1024mb的ram,我怎么能知道它当前使用了多少ram。

我自己开始这个过程,所以我可以访问Process对象,我只想更清楚一下我的属性是什么。

如果您对物理内存纯粹感兴趣,那么您可能需要WorkingSet64 ,它提供“为关联进程分配的物理内存量”。 了解此值不断波动,此调用给您的值可能不是最新的。 您可能还对PeakWorkingSet64感兴趣,它提供了“关联进程使用的最大物理内存量”。

我在msdn上找到了它并且它正在工作

System.Diagnostics.Process proc = assign your process here :-) int memsize = 0; // memsize in Megabyte PerformanceCounter PC = new PerformanceCounter(); PC.CategoryName = "Process"; PC.CounterName = "Working Set - Private"; PC.InstanceName = proc.ProcessName; memsize = Convert.ToInt32(PC.NextValue()) / (int)(1024); PC.Close(); PC.Dispose(); 

好的,我希望这与任务管理器中描述的相同,并尝试:

 Process.PrivateMemorySize64 Process.PeakVirtualMemorySize64 Process.PeakPagedMemorySize Process.PagedSystemMemorySize64 Process.PagedMemorySize64 Process.NonpagedSystemMemorySize64 Process.WorkingSet64 

并且没有一个工作,性能计数器呢!

 PerformanceCounter PC = new PerformanceCounter(); PC.CategoryName = "Process"; PC.CounterName = "Working Set - Private"; PC.InstanceName = "processNameHere"; memsize = Convert.ToInt32(PC.NextValue()) / (int)(1024); PC.Close(); PC.Dispose(); 

非常感谢 !