Windows 为其内部使用保留了一些通常不会分配给应用程序的内存。如果您在没有页面文件的情况下运行或将页面文件限制为相对较小的大小(例如 3GB),则最容易看到此保留。Windows 将主要分配 RAM 达到限制,填充页面文件中的剩余可用空间(如果有),并在没有剩余页面文件空间且超出分配的 RAM 限制时发出内存不足警告。
该限制似乎是总系统 RAM 的百分比。 Windows 7的64位极限这里讨论和规避“低内存警告”的方法是这里讨论。
禁用低内存警告有一些优点 - 您可以在 8GB 机器上使用大约 600MB 以上的 RAM)但是有一个严重的缺点 - 当您的内存不足时,程序会崩溃。
在收到内存不足警告之前,您可以在 8GB Windows 8 x64 上分配多少 RAM?是否可以调整警告阈值?
编辑:我无法自己回答这个问题,因为它因争吵而关闭。但是我在这里回答了: 16GB x64 窗口的“内存不足警告”阈值是多少?
简而言之,是的,Windows 8.1 x64 的行为方式与 Windows 7 x64 相同。如果您的提交限制 - 提交费用较低,则在可能的情况下仍有相当大比例的 RAM 可用。这是通过将更多内容移动到页面文件中来完成的。
Dav*_*rtz 13
这种行为是现代内存管理所固有的。如果可用的后备存储量(页面文件或交换空间)相对于物理内存量不够,几乎每个现代虚拟内存操作系统都会发生这种情况。
如果您查看 Windows 系统上的现代应用程序,您会发现它们的工作集(它们使用的物理内存)往往比它们的提交大小(操作系统承诺的虚拟内存)小一点。
例如,在我的桌面 Windows 机器上,我用来输入这个答案的浏览器使用的是 207MB 的 RAM,但操作系统已经承诺它有 280MB 的虚拟内存。这意味着在任何时候,浏览器都可以消耗 280MB 的虚拟内存,而无需请求操作系统许可,只需访问它已有的映射即可。操作系统要么需要为进程提供此内存,要么必须强行终止它,未能兑现它已经做出的承诺。
由于根本没有后备存储,只有物理 RAM,因此必须为该应用程序保留 73MB 的额外 RAM。即使浏览器只使用 207MB 的 RAM,它也可以通过使用它已经分配的内存膨胀到 280MB,而操作系统尚未实际分配给它(只是保留)。
如果操作系统有足够的后备存储来存储它的所有承诺,那么它可以继续做出承诺。但事实并非如此,它被迫做出不愉快的选择。它可以告诉应用程序它不能再做出任何承诺,即使有足够的可用 RAM。或者它可以授予应用程序承诺,但是当应用程序开始使用它们已经分配的资源时必须强制终止它们。
解决方法很简单,配置充足的后备存储。这曾经不是问题。每个人都有数百 GB 的巨型磁盘。因此,添加与物理内存相等的后备存储不是问题。但是,最近带有小型 SSD 的机器变得越来越普遍。所以这又成为一个问题。
请注意,甚至不需要触及页面文件即可解决此问题。操作系统只需要知道它在不太可能同时调用大量承诺的情况下可用。这几乎从来没有真正发生过——这有点像内存库上的运行。
(有关用户和内核模式虚拟地址空间限制等的更多详细信息,请参阅完整表格。)
用红色突出显示的那一点可能是您想到 25% 限制的地方。是的,在 32 位版本的 Windows 上,32 位进程可以使用安装的 4 GB 中只有 ~3 GB 的 RAM,这在 Windows 8 中并没有神奇地改变。至于为什么会这样,我不会去费心重复互联网上已经详细解释过的所有文章,包括 Jeff Atwood 的Dude,我的 4 GB 内存在哪里?
归档时间: |
|
查看次数: |
12532 次 |
最近记录: |