【问题标题】:Why does Process.PrivateMemorySize64 /1024 not match what Windows Task Manager Memory (Private Working Set)?为什么 Process.PrivateMemorySize64 /1024 与 Windows 任务管理器内存(私有工作集)不匹配?
【发布时间】:2014-12-18 22:02:33
【问题描述】:
为什么Process.PrivateMemorySize64 /1024 与 Windows 任务管理器内存(私有工作集)不匹配?
似乎有很大的差异(~ 30%)。此外,该值不会像任务管理器那样频繁更新。
致电_process.Refresh() 没有帮助。
【问题讨论】:
标签:
c#
.net
memory
taskmanager
【解决方案1】:
你在看不同的东西。
Process 类中的PrivateMemorySize64 属性相当于 Private Bytes 性能计数器。它表示为关联进程分配的不能与其他进程共享的私有内存总量。私有字节不仅是物理内存,还有分页文件等。
另一方面,私有工作集跟踪上述私有字节的子集,它仅表示进程正在使用的物理内存,不能与其他进程共享。 p>
【解决方案2】:
PrivateMemorySize64 代表您的所有私有内存,而不仅仅是私有工作集,即当前未分页到磁盘的私有内存量。
如果您想知道进程的总大小,您应该使用 VirtualMemorySize64 属性。它占您的进程分配的所有内存,无论该内存是分页的还是在 RAM 上。例如,这对于了解您的 32 位进程是否接近 2GB 的虚拟大小(进程地址空间)很有用,这通常是 32 位进程的限制(除非在 32 位 Windows 上使用 /3GB 选项或该应用程序在 64 位版本的 Windows 上运行,并且支持大地址)。