OS X 虚拟内存大小不可能正确,是吗?

OS X 虚拟内存大小不可能正确,是吗?

我有 Snow Leopard 和 8G RAM。活动监视器报告虚拟机大小为 173千兆字节。我的硬盘只有 250G,其中 200G 正在使用中。我的硬盘上的数据远多于 27 GB。所以虚拟内存大小不可能是 173GB,对吧?

答案1

虚拟内存并非始终处于完全占用状态。您的 Mac 可能已将虚拟内存的最大限制设置为 173 GB。

这并不意味着所有 173 GB 内存都已分配。它将根据需要进行分配。

我认为,除非你使用一些极其耗费 RAM 的应用程序,否则不会分配超过 8 GB 的内存。

答案2

我的虚拟机大小为 350 GB。

VM 大小实际上并不反映正在使用的任何资源,也不是限制。它是地址空间大小ps -ax -O vsz将显示这些)适用于所有正在运行的进程。地址空间大小只是该进程用来引用内存中位置的最大数字;低于该值的内存甚至可能不会分配给任何用途。

以下仅举一个例子来说明为什么会出现这样的差距:

多个程序可能会使用代码共享库(有时也称为框架),例如 Cocoa。为了高效地启动程序,这些共享库的排列方式是,系统上的每个库(大多数情况下)都位于不同的虚拟地址 — 这意味着,当程序加载时,引用该库的代码已经可以指向该地址,无需使用不同的地址(重定位或动态链接)重写。但并非每个程序都会使用每个库,因此会存在差距。

(我不是这些问题的专家;一些具体细节可能不对。将上述内容视为现代系统中可能存在的复杂性的指南,而不是它实际的工作方式。)

相关内容