【问题标题】:How to determine RAM usage within the heap.?如何确定堆内的 RAM 使用情况。?
【发布时间】:2013-10-29 14:09:43
【问题描述】:

有人知道如何确定堆内进程的 RAM 使用情况吗?具体来说,与 .NET 堆大小相比,.NET 对象使用了多少实际内存?

【问题讨论】:

    标签: .net memory heap-memory memory-consumption


    【解决方案1】:

    这是不可能的。在任何时候,虚拟内存地址空间的不同部分都可能被换出。操作系统使用最近使用的算法来确定哪些页面应该留在 RAM 中,以确保进程最不可能减慢速度。这些选择是高度动态的,需要尽可能快地运行,以最大程度地减少需要 RAM 再次运行的其他进程的延迟。即使您可以看到映射,它也只是一个快照,很快就会变得无关紧要。

    您拥有的唯一指示是您自己的进程的 Environment.WorkingSet 属性,另一个进程的 Process.WorkingSet64。但这只是整个过程的粗略数字,无法从那里分解。否则,没有 winapi 功能,您也无法轻松发现 GC 堆段的 VM 地址。 SysInternals 的实用程序对于这种低级黑客攻击通常很方便。但是,VMMap 不显示 RAM 使用情况,并且 RAMMap 不再在我的 Win 8.1 机器上工作,所以我无法告诉你你能看到多少。

    【讨论】:

      猜你喜欢
      • 2020-11-05
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-12
      • 2010-09-28
      • 2011-11-30
      相关资源
      最近更新 更多