虚拟机内存使用情况未出现在 TaskManager 中

Sco*_*ger 35 virtualization windows memory task-manager

有一些关于 Windows 内存管理的东西,它与 TaskManager 的关系我不明白,我希望有人能启发我。

如果我正在运行虚拟机(不管是 Virtual PC 2007、Virtual Server 2005 还是 VirtualBox,因为它们的行为方式相同)并调出 TaskManager 我可以在进程选项卡上看到 VM 的一些条目,但是内存值相当小(大约 30 MB)。显然,它不包括 VM 本身实际消耗的内存。您可以显示的各种与内存相关的列都没有以不同的方式工作。性能选项卡上的内存使用情况对于包括 VM 在内的总内存使用情况似乎是正确的。

所以我的问题是为什么 VM 的内存使用量(将是 100 MB)没有显示在“进程”选项卡上?

小智 37

VirtualPC、HyperV 和可能的类似产品使用称为驱动程序锁定内存的东西,这在进程资源管理器、任务管理器等中不可见 。RAMMap将显示进程使用的驱动程序锁定内存。

  • 只是为了向其他人指出,他没有说进程锁定内存。他说_driver_锁定了内存。这就是动态内存的工作原理。如果您不喜欢它,或者认为它会干扰您的应用程序,那么您可以将虚拟机配置为静态内存而不是动态内存。我发现一些 Java 应用程序在虚拟机中使用动态内存时出现问题,将它们设置为静态_修复了故障_。 (2认同)

Mar*_*son 6

要查看 VM 使用的内存量,您需要确保在任务管理器中显示工作集列。通常只有私有集是可见的。

要启用此列:

1) 启动任务管理器

2) 转到进程选项卡

3)查看>选择列

4) 确保勾选“内存-工作集”

例如,我目前运行的 VM 的 Private Set 是 43mb,而 Working Set 是 2.3Gb

  • 也许它在不同版本的 Windows 中有所不同,但在 Windows 7 下,这不是我所看到的。“工作集”数字大于“私人工作集”数字,但远不足以说明 VM 的内存。我已经尝试了所有与内存相关的列,但都没有。这适用于 Windows Virtual PC 和 VirtualBox。您使用的是什么版本的 Windows 和什么 VM 主机? (2认同)

Jak*_*ins 6

任何像您列出的托管虚拟化系统都将包含一个在主机操作系统内核中运行的设备驱动程序。这是必要的,因为用户模式程序无法发出创建虚拟机所需的指令。

您在任务管理器中看不到内存的原因是您正在查看与虚拟机关联的用户模式程序的内存,而不是实际为 VM 分配内存的内核模式设备驱动程序。