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

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

如果我正在运行虚拟机(Virtual PC 2007,Virtual Server 2005或VirtualBox,因为它们的行为方式相同,无所谓),并启动TaskManager,我可以在进程选项卡上看到一些虚拟机的条目,但内存值相当小(大约30 MB)。 显然这不包括虚拟机本身正在使用的内存。 您可以使任何各种与内存相关的列都不可见。 “性能”选项卡上的“内存使用情况”对于包括VM在内的总内存使用情况显示为正确。

所以我的问题是为什么虚拟机的内存使用(这将是100的MB)出现在进程选项卡上?

VirtualPC,HyperV和可能类似的产品使用了一些称为驱动程序locking内存的东西,这在Process Explorer,任务pipe理器等中是不可见的.RAMMap将向您显示进程使用的驱动程序locking内存。

任何托pipe的虚拟化系统(如您所列的虚拟系统)都将包含在主机操作系统内核中运行的设备驱动程序。 这是必需的,因为用户模式程序不能发出创build虚拟机所需的指令。

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

要查看虚拟机正在使用的内存量,需要确保在“任务pipe理器”中显示“工作集”列。 通常只有私人设置是可见的。

要启用此列:

1)启动任务pipe理器

2)转到“进程”选项卡

3)查看>select列

4)确保“记忆 – 工作集”被勾选

例如,我现在运行的虚拟机的私有集合是43MB,而工作集是2.3Gb