[英]Process.PrivateMemorySize64 returning committed memory instead of private
[英]Why does Process.PrivateMemorySize64 /1024 not match what Windows Task Manager Memory (Private Working Set)?
为什么Process.PrivateMemorySize64 /1024
与 Windows Task Manager Memory (Private Working Set) 不匹配?
似乎有很大(~ 30%)的差异。 另外,该值不像任务管理器那样经常更新。
调用_process.Refresh()
没有帮助。
你正在寻找不同的东西。
Process类的PrivateMemorySize64
属性等同于Private Bytes性能计数器。 它表示为无法与其他进程共享的关联进程分配的专用内存总量。 专用字节不仅是物理内存,还包括分页文件等。
另一方面,私有工作集跟踪上面的私有字节的子集 ,其仅表示进程正在使用的物理内存,并且不能与其他进程共享。
PrivateMemorySize64代表您的所有私有内存,而不仅仅是私有工作集,它是当前未分页到磁盘的专用内存量。
如果您想知道进程的总大小,则应使用VirtualMemorySize64属性。 它会占用您的进程分配的所有内存,无论该内存是分页还是内存。 这有助于了解您的32位进程是否接近2GB的虚拟大小(进程地址空间),这通常是32位进程的限制(除非在32位Windows上使用/ 3GB选项或该应用程序在64位版本的Windows上运行,并且具有大地址识别功能。
我想这就是你要找的
var ram = new PerformanceCounter("Process", "Working Set - Private", processName, true);
var ramUsage = Math.Round(ram.NextValue() / 1024 / 1024, 2)
Console.WriteLine($"{ramUsage}");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.