Windows XP 任务管理器可以显示两列有关进程内存使用情况的信息。一列是Mem Usage
,另一列是VM Size
(默认情况下不显示,您需要激活它)。
据我所知,VM size
是进程占用的整个内存空间的大小,Mem Usage
是当前提交和使用的内存量。当VM Size
仅略大于 时,大多数进程都验证了这一假设Mem Usage
。例如,我的 Outlook 目前在 中有 79,724 K VM Size
,在 中有 56,600 Mem Usage
K。
但对于其他进程,如 Firefox,它却失败了,目前 的内存为 171,900 K,Mem Usage
而 的内存仅为 156,440 K。VM Size
进程使用的内存怎么会超过分配给它的虚拟内存量呢?
所以我对这些列的解释可能是错误的。它们到底是什么意思?
答案1
来自 Windows XP 任务管理器帮助主题:
内存使用情况
在任务管理器中,进程的当前工作集(以千字节为单位)。当前工作集是当前驻留在内存中的页面数。在任务管理器进程选项卡上,列标题为内存使用情况。
虚拟内存大小
在任务管理器中,分配给进程的虚拟内存或地址空间量。在任务管理器进程选项卡上,列标题为虚拟机大小。
因此,Mem Usage 是当前分配给进程的物理 RAM 量,而 VM Size 是当前分配给进程的虚拟(基于磁盘的)内存量。
这两个计数器是独立的,尽管一个计数器显示的数字高的过程通常也会在另一个计数器显示的数字高。只是两者之间没有特定的关系。
答案2
“虚拟内存”的定义基于使用连续的虚拟内存地址重新定义地址空间,以“欺骗”程序认为它们正在使用大块连续的地址。来源
因此,有时 VM 地址空间中可能存在来自较旧选项卡的内容。例如,我现在在浏览器会话中打开了 50 个选项卡。如果我单击第一个选项卡,则很可能它正在 VM 中等待调用。因此,在屏幕上绘制需要一秒钟。我开始听到硬盘在将该选项卡从 VM 中取出时发出的声音
如果不是这样。可能是 FF 内存泄漏或扩展是罪魁祸首。我在 Firefox 测试版上使用 divx web player 插件时也遇到过类似的问题。
答案3
我看到的唯一解释是内存碎片。当进程分配 1 个八位字节时,它在 VM 大小中占 1 个八位字节。但这 1 个八位字节占用了物理内存的一页:对于 Windows 操作系统,一页是 4K。因此,如果进程内存碎片化并使用大量小块,则会导致与实际分配的内存大小相比,物理内存使用量巨大。
答案4
只是猜测,它可能是 Firefox 分配的共享内存块,然后交给其他任务并被 FF 取消映射,但仍算作由它拥有?