我在弄清楚如何准确地获取进程的内存使用率时遇到了一些麻烦。(它当前消耗了多少内存,而不是保留了多少内存,或者它的最大或最小内存)
假设我有一个在后台运行的进程,Java.exe,它被允许使用1024mb的内存,我怎么知道它当前使用了多少内存。
我自己启动了进程,所以我可以访问process对象,我只是想要更多地澄清一下我的属性是什么。
发布于 2009-05-09 03:35:42
如果您纯粹对物理内存感兴趣,则可能需要WorkingSet64,它提供“为相关进程分配的物理内存量”。请注意,此值不断变化,此调用给您的值可能不是最新的。您可能还会对PeakWorkingSet64感兴趣,它提供了“相关进程使用的最大物理内存量”。
发布于 2013-02-17 21:46:47
我在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();
发布于 2020-01-26 03:21:12
Win32 GetSystemInfo function也适用。
在这个Memory.dll项目中,它实际上在实践中成功地用于字节数组扫描:https://github.com/erfg12/memory.dll/blob/042db0cf75e4152a7adf1ea47e6f23f1ad763fb6/Memory/memory.cs#L1909
https://stackoverflow.com/questions/842585
复制相似问题