锯此主题但我认为这并不能完全回答我的问题,所以我继续。我使用的是 Windows 8 Enterprise,板载 4 Gb RAM,已启用页面文件。我正在查看我的性能指标,我发现当前提交费用为 4.14 Gb,而使用的物理内存量为 2.43 Gb,另外还有 919 Mb 用于待机(即文件缓存等)。
但为什么会这样呢?如果我正确理解了“提交费用”的概念,它基本上意味着所有正在运行的应用程序和服务对 RAM 的当前需求。那么,对我来说,这完全令人费解,为什么 Windows 会为缓存分配那么多内存,同时强制将部分正在运行的应用程序交换到页面文件?清除大部分缓存以给正在运行的应用程序提供尽可能多的 RAM,并在有更多可用 RAM 可用时重新填充缓存,这不是更合理吗?
答案1
不,提交费用不是“当前对 RAM 的需求”。它是当前对页面文件支持的虚拟地址空间的需求(所有进程的总和,加上一些系统范围的分配)。
仅引用其中一部分的情况很常见。将 RAM 绑定到尚未引用的虚拟地址空间部分是完全愚蠢的(除非您有某种方式知道将来会引用什么)。
另一方面,将 RAM 分配给缓存是因为有充分的证据表明缓存的内容可能很快再次需要(在大多数情况下,证据表明它最近被引用过)。那么为什么不把它保存在 RAM 中呢?
另外:RAM 不会永久地“分配”给缓存。如果其他东西需要更多 RAM,缓存的 RAM 将会缩减(如有必要)以容纳它们。
几乎永远没有足够的 RAM 将所有进程的虚拟地址空间保存在 RAM 中。因此,每个虚拟内存操作系统都在玩平衡游戏,试图将最有趣的东西保存在 RAM 中。长期的经验表明,将部分 RAM 用于各种缓存是一种很好的优化。这肯定比将部分 RAM 用于从未被引用且可能永远不会被引用的进程私有 vas 更好。