有谁知道为什么 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
答案3
VMMap 可能有错误这使得已提交的页面包含丢弃的页面或交换文件中的页面。
因此现在它看起来像是不活动的内存...它只是作为保留(或作为错误)分配。
工作集仅包含活动内存,VMMap 和 Process Explorer 确实显示相同的 WS...
答案4
内存,已提交字节:这是对虚拟内存需求的衡量指标。它显示进程分配了多少字节,以及操作系统已将 RAM 页框或页面文件中的页槽(或两者)提交给哪些字节。随着已提交字节数增长超过可用 RAM,页面调度会增加,使用的页面文件数量也会增加。在某个时候,页面调度活动开始显著影响感知性能。
因此,我相信已提交字节数与 VirtualBox 无关 - 它只是系统中所有正在运行的进程的物理 RAM 页面的总和。在这种情况下,Process Explorer 返回的数据是正确的。