如何在.net中获取/计算进程使用的总内存?

时间:2011-10-31 06:46:51

标签: .net memory

我想计算.net中进程使用的总内存。这里的总内存包括页面文件和RAM使用情况。我发现最接近的是Process类中的VirtualMemorySize64,但它总是比总内存使用率低一点,如第三方内存诊断软件所示。

3 个答案:

答案 0 :(得分:0)

如果你纯粹对物理内存感兴趣,你可能需要WorkingSet64,它给出了“为相关进程分配的物理内存量”。了解此值不断波动,此调用给您的值可能不是最新的。您可能还对PeakWorkingSet64感兴趣,它提供了“关联进程使用的最大物理内存量。”

为了计算页面文件,请使用PagedMemorySize64。 “此属性返回的值表示进程使用的虚拟内存分页文件中的当前内存大小。操作系统将虚拟内存分页文件与物理内存结合使用,以管理每个进程的虚拟地址空间。” / p>

答案 1 :(得分:0)

谢谢贾斯汀。我最终使用了System.Diagnostics.Process.VirtualMemorySize64

答案 2 :(得分:0)

“我的过程使用的总内存”的定义是未定义的,因为有许多不同类型的内存,它们意味着不同的东西,并且您需要回答很多问题才能完全定义它。以下是其中一些:

  1. 您是否包含代码和数据代码,或仅包含数据?
  2. 如果此代码当前与其他进程共享(例如,两者都使用的常见DLL),该怎么办?
  3. 您是仅包括已提交的内存,还是所有已分配的内存?
  4. 您的进程可以将内存分配为“共享”,但它目前不与任何人共享。因此它不会出现在任何工作集中,但它实际上仅由您的进程使用。
  5. 有一个很好的两部分讲座可以回答你的问题。但你需要投入2个小时的时间来观看它:)。 Part 1Part 2