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


28

我不了解Windows内存管理及其与TaskManager的关系,希望有人能启发我。

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

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

Answers:


30

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


1
作为记录,RAMMap仅是Vista或更高版本。
蒂姆·阿贝尔2012年

1
RAMMap没有显示进程的锁定内存,而是显示了锁定的内存总量
NeDark 2014年

只是为其他人指出,他没有说进程锁定了内存。他说司机锁住了记忆。这就是动态内存的工作方式。如果您不喜欢它,或者认为它与您的应用程序混乱,那么您可以仅将VM配置为静态内存,而不是动态内存。我已经看到一些Java应用程序在VM中使用动态内存时出现问题,将它们设置为静态可修复故障
约翰C

实际哪个进程分配了该内存?我尝试了SysInternals的VMMap,当您选择正确的VBoxHeadless.exe进程时(它是进程树分支上的叶子,即它没有任何其他子级,可以使用例如Process Explorer查找它),该“丢失”的内存出现在该进程的“ 专用字节”和“ 工作集”下(即使“进程资源管理器”对这两个值的显示都少得多)。所以我有点困惑为什么它们显示不同的值,但是VMMap似乎显示实数
戴维·费伦茨·罗戈扬

6

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

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


实际哪个进程分配了该内存?我尝试了SysInternals的VMMap,当您选择正确的VBoxHeadless.exe进程时(它是进程树分支上的叶子,即它没有任何其他子级,可以使用例如Process Explorer查找它),该“丢失”的内存出现在该进程的“ 专用字节”和“ 工作集”下(即使“进程资源管理器”对这两个值的显示都少得多)。所以我有点困惑为什么它们显示不同的值,但是VMMap似乎显示实数
Dawid FerenczyRogožan

5

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

要启用此列:

1)启动任务管理器

2)转到进程选项卡

3)查看>选择列

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

例如,我目前正在运行的VM的私有集为43mb,而工作集为2.3Gb


1
应用程序使用的内存总量是多少?工作集+专用集还是仅工作集?
zendar

2
也许在不同版本的Windows中有所不同,但是在Windows 7下这不是我所看到的。“工作集”编号大于“私有工作集”编号,但是距离不足以说明VM的内存。我已经尝试了所有与内存相关的列,但都没有。Windows Virtual PC和VirtualBox都具有此功能。您正在使用哪个版本的Windows和哪个VM主机?
Scott Bussinger 2009年

不幸的是,没有一个数字指示一个进程正在使用“多少内存”,因为您会遇到诸如共享内存,文件映射的内存,分页的内存等一些复杂问题。这里有几个概念一个很好的解释:stackoverflow.com/questions/1984186/...
tylerl

在这种情况下,我认为工作集不会告诉您任何有用的信息。据报告,在VM内部,它使用大约6 GB的内存,而VirtualBox的进程在其“ 工作集中”消耗的内存不超过100 MB 。
戴维·费伦茨·罗戈扬
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.