我试图了解已提交字节数和提交限制之间的实际差异。根据以下定义,
提交限制是无需扩展页面文件即可提交的虚拟内存量。以字节为单位。已提交内存是在磁盘页面文件上保留空间的物理内存。
已提交字节数是已提交的虚拟内存量(以字节为单位)。
从我的计算机配置中,我看到我的物理内存为 1991 MB,虚拟内存(所有文件的总分页文件)为 1991 MB,最小允许内存为 16 MB,推荐内存为 2986 MB,当前分配内存为 1991 MB。
但是当我打开我的 perfmon 并监控提交字节数和提交限制时,数字相差很大。那么这些提交字节数和提交限制到底是什么,它们是如何形成的。
现在在我的 perfmon 中,已提交字节数为 3041 MB(有时也会达到 4000 MB),提交限制为 4177 MB。那么它们是如何计算的呢?请解释一下。我读了很多文档,但我不明白这是如何运作的。
请帮忙。谢谢。
答案1
提交限制是 RAM 大小(不是可用 RAM,而是操作系统可用的总 RAM)加上当前页面文件大小。
这是系统中可以存在的最大“已提交的私人”虚拟内存量。简而言之,“已提交的私人”虚拟内存就是页面文件作为“后备存储”的虚拟内存。这意味着如果不能将所有内容保存在 RAM 中,则无法保存在 RAM 中的内容必须保存在页面文件中,因为没有其他地方可以保存它们。
已提交字节数(又称“提交费用”)主要是所有当前分配的私有已提交内存的总和,加上下一段提到的非分页分配。
其他类型的虚拟内存要么由其他文件(映射文件)支持 - 即它们带有自己的后备存储,因此它们不会产生提交费用 - 要么必须始终保留在 RAM 中(示例:非分页池;AWE 分配)。这些确实会产生提交费用。
在 PerfMon 中,每个进程的“专用字节”计数器是其“已提交字节”分配。即其对系统范围“提交费用”的贡献。分页池也算作“已提交字节”——它必须在 RAM 中或页面文件中。非分页池、AWE 分配和其他不可分页的东西也算作“已提交字节”(尽管它们从未进入页面文件),以便正确计算剩余的“提交限制”量。这些是“已提交字节”的主要贡献者。
超出提交限制是您看到“系统内存不足”或“系统内存不足”消息的原因。(它们与可用 RAM 无关!)在前一种情况下,操作系统扩展了您的页面文件 - 从而增加了提交限制 - 为新分配腾出空间。在后一种情况下,它已经尽其所能(在您当前的页面文件设置内)并且有人仍然想要更多。