【问题标题】: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() 没有帮助。

【问题讨论】:

  • 见这里(itwriting.com/dotnetmem.php)。这可以帮助您找出 .Net 上的内存问题。 TaskManager 中打印的内存并不是你的应用程序实际使用的内存。
  • 它们是完全不同的数字,虚拟内存与物理内存。

标签: c# .net memory taskmanager


【解决方案1】:

你在看不同的东西。

Process 类中的PrivateMemorySize64 属性相当于 Private Bytes 性能计数器。它表示为关联进程分配的不能与其他进程共享的私有内存总量。私有字节不仅是物理内存,还有分页文件等。

另一方面,私有工作集跟踪上述私有字节的子集,它仅表示进程正在使用的物理内存,不能与其他进程共享。 p>

【讨论】:

    【解决方案2】:

    PrivateMemorySize64 代表您的所有私有内存,而不仅仅是私有工作集,即当前未分页到磁盘的私有内存量。

    如果您想知道进程的总大小,您应该使用 VirtualMemorySize64 属性。它占您的进程分配的所有内存,无论该内存是分页的还是在 RAM 上。例如,这对于了解您的 32 位进程是否接近 2GB 的虚拟大小(进程地址空间)很有用,这通常是 32 位进程的限制(除非在 32 位 Windows 上使用 /3GB 选项或该应用程序在 64 位版本的 Windows 上运行,并且支持大地址)。

    【讨论】:

      猜你喜欢
      • 2013-11-07
      • 2012-08-14
      • 1970-01-01
      • 2014-08-26
      • 2013-03-23
      • 2011-07-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      相关资源
      最近更新 更多