簡體   English   中英

獲取進程的 ram 使用情況

[英]Getting a process's ram usage

我在弄清楚我如何獲得進程的 ram 使用量時遇到了一些麻煩。 (它當前消耗了多少內存,而不是保留了多少,或者它的最大值或最小值)

假設我有一個進程在后台運行,Java.exe,它被允許使用 1024mb 的內存,我怎么知道它當前使用了多少內存。

我自己開始這個過程,所以我可以訪問 Process 對象,我只想更清楚地說明什么屬性適合我。

我在 msdn 上找到了這個,它正在工作

System.Diagnostics.Process proc = ...; // assign your process here :-)

int memsize = 0; // memsize in KB
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();

如果您純粹對物理內存感興趣,您可能需要WorkingSet64 ,它給出“為相關進程分配的物理內存量”。 了解這個值不斷波動,這個調用給你的值可能不是最新的。 您可能還對PeakWorkingSet64感興趣,它給出了“相關進程使用的最大物理內存量”。

太好了,我希望它與任務管理器中描述的一樣,並嘗試:

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

這些都不起作用,但Performance Counter起作用了

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();

多謝 !

Win32 GetSystemInfo 函數工作。

在這個 Memory.dll 項目中,它實際上成功地用於實踐中的字節數組掃描: https : //github.com/erfg12/memory.dll/blob/042db0cf75e4152a7adf1ea47e6f23f1ad763fb6/Memory/memory.cs#L1909

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM