繁体   English   中英

为什么 Process.PrivateMemorySize64 /1024 与 Windows Task Manager Memory (Private Working Set) 不匹配?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM