进程管理器未显示占用内存最大的用户

进程管理器未显示占用内存最大的用户

有谁知道为什么 Process Explorer 可能会显示我的 Virtual Box 实例的内存使用量的这些奇怪值?

以下是真实数字:

虚拟机映射

但是 Process Explorer 显示的内容如下:

替代文本

替代文本

因此,该进程已提交 1.2 GB 的 VM,其中 1.1 GB 是私有的。但 Process Explorer 只看到 196 MB 的 VM,只有 48 MB 的私有内存!这是怎么回事?

编辑:这个记忆是不是只是保留。它实际上得到了用过的

替代文本

答案1

Mark Russinovich 解释说,这是因为 VirtualBox大量内存,请求操作系统将其保留在工作集中

但是,如果您只是尝试VirtualLock使用一堆 RAM,则不会看到这一点。所有 RAM 都会得到妥善利用,就像它应该的那样。所以这是 VirtualBox 分配此内存的方式的另一个问题。顺便说一句,它也会影响 ProcessHacker。

奇怪的是,ProcessHacker 正确地枚举了所有分配的内存范围,只需将它们相加即可得到正确的值,但操作系统报告的计数器是错误的。相差几 GB。不好!

我称其为 Windows RAM 报告的一个怪癖。我将其称为错误,但它可能已经存在至少十年了,所以现在我猜人们可以称其为预期行为……在 Process Explorer 和 Process Hacker 中都没有得到妥善解决。

答案2

使用 SysInternals拉姆地图我认为您可以看到内存被记录为“DriverLocked”。

但是我不知道如何从这里返回锁定它的驱动程序。重要的是,驱动程序不是 VirtualBox 程序,而是 VirtualBox 安装和使用的驱动程序。

如果简单地关闭虚拟机不能从“DriverLocked”池中释放内存,那么您可以使用类似的工具自动运行查看启动时加载了哪些驱动程序并禁用它们。这是一个手动过程,如果有人知道如何判断哪些驱动程序锁定了内存,我会非常感兴趣。

答案3

VMMap 可能有错误这使得已提交的页面包含丢弃的页面或交换文件中的页面。

因此现在它看起来像是不活动的内存...它只是作为保留(或作为错误)分配。

工作集仅包含活动内存,VMMap 和 Process Explorer 确实显示相同的 WS...

答案4

RAM、虚拟内存、页面文件和所有这些东西

内存,已提交字节:这是对虚拟内存需求的衡量指标。它显示进程分配了多少字节,以及操作系统已将 RAM 页框或页面文件中的页槽(或两者)提交给哪些字节。随着已提交字节数增长超过可用 RAM,页面调度会增加,使用的页面文件数量也会增加。在某个时候,页面调度活动开始显著影响感知性能。

因此,我相信已提交字节数与 VirtualBox 无关 - 它只是系统中所有正在运行的进程的物理 RAM 页面的总和。在这种情况下,Process Explorer 返回的数据是正确的。

相关内容