Windows 8 64 位表示内存不足,而 4+Gb 可用

arh*_*ops 6 memory windows 64-bit windows-8.1

我有 Windows 8.1 64 位,8Gb 内存。

我的任务管理器显示 49% 已使用 ram,但我仍然收到诸如“Windows 内存不足,我们建议关闭应用程序”之类的消息。它总是说当前未处于活动状态但比其他进程使用更多内存的应用程序(当 Firefox 启动时,它是 Firefox,否则它是 Skype)。

所以我的问题是:如何设置阈值或如何强制 Windows不报告内存不足?

注意:即使它有 70+% 的空闲,它仍然报告内存不足。运行的应用程序数量不匹配。

注意 2:当我启动新应用程序时不会发生这种情况。看起来windows有一些内存检查器,它在交换时定期弹出该消息。它最大限度地减少了活动应用程序(游戏或浏览器)并向我展示了那条奇怪的消息。

Dav*_*rtz 15

您的虚拟内存不足。即使您有足够的可用 RAM,也可能发生这种情况。

这就像即使你有足够的支票和银行里的钱,也无法花钱。你必须有足够的钱来支付你已经开出的支票,否则如果你的所有支票都被一次性兑现,你就不能再写而不会冒灾难的风险。

一个简单的解决方案是放大分页文件。

分页文件就像 Windows 可以借用的信用额度。知道它可以从分页文件借用它的所有支票一次兑现,它可以继续写支票。很可能它实际上不会使用分页文件,但它只是需要它来确保它能够兑现承诺。

例如,假设您有 4GB 的 RAM。四个应用程序启动并告诉操作系统它们可能需要多达 1GB 的 RAM(预留)。操作系统说“很好”,然后所有四个应用程序都启动了。(你不想让他们跑吗?!)

假设他们现在总共使用了 1GB 的 RAM。然后另一个应用程序启动并要求 1GB。操作系统能做什么?如果它对该应用程序说是,那么在所有应用程序突然使用它们要求的所有内存的极不可能的情况下会发生什么?操作系统没有 5GB 可用空间,并且它不能撤销它已经做出的承诺。

当然,对于页面文件,它可以将很少使用的页面写入磁盘并遵守其所有承诺。所以它需要页面文件来允许另一个应用程序运行,即使 3GB 是免费的。

使用大型分页文件,只要实际工作集可以容纳在 RAM 中,Windows 就可以允许应用程序运行。如果根本没有分页文件,Windows 就不能允许任何应用程序运行,除非它可以根据它已经做出的承诺在 RAM 中容纳可能使用的所有内容。这意味着,例如,一个 1GB 文件的简单私有、可写映射实际上浪费了整个 1GB 的 RAM,因为应用程序可能会写入该文件的每个字节,因此 1GB 的 RAM 只能包含可以安全访问的页面。丢弃。

顺便说一下,Linux 允许操作系统过量使用后备存储。这样做的缺点是,如果操作系统最终做出无法兑现的承诺,它可能需要强行终止进程。这就是为什么 Linux 有“ OOM kiler ”而 Windows 没有的原因。无论如何,大多数 Linux 机器都禁用了过量使用