Windows 8 64位显示内存不足,但还有4+Gb可用

Windows 8 64位显示内存不足,但还有4+Gb可用

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

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

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

注意:即使有 70% 以上的可用内存,它仍然会报告内存不足。正在运行的应用程序数量没有增加。

注 2:当我启动新应用程序时不会发生这种情况。看起来 Windows 有一些内存检查器,当关闭时它会定期弹出该消息。它会最小化活动应用程序(游戏或浏览器)并向我显示那条奇怪的消息。

答案1

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

这就像即使你有很多支票和银行账户里有很多钱,你也无法花钱一样。你必须有足够的钱来支付你已经签发的支票,否则你就无法再签发支票,因为如果你的所有支票被同时兑现,你就会面临灾难的风险。

一个简单的解决方案就是扩大页面文件。

页面文件就像是 Windows 可以借用的信用额度。它知道如果所有支票都一次性兑现,它可以从页面文件借款,因此可以继续开支票。很可能它实际上不会使用页面文件,但它只是需要它来确保它能够履行承诺。

例如,假设您有 4GB 的 RAM。四个应用程序启动并告诉操作系统它们可能需要最多 1GB 的 RAM(预留)。操作系统说“没问题”,然后所有四个应用程序都启动了。(您不希望它不让它们运行吗?!)

假设他们现在总共使用了 1GB 的 RAM。然后另一个应用程序启动并请求 1GB。操作系统能做什么?如果它同意该应用程序,那么万一所有应用程序突然使用了它们请求的所有内存,会发生什么情况?操作系统没有 5GB 可用,它无法撤销已经做出的承诺。

当然,有了页面文件,它就可以将很少使用的页面写入磁盘并履行所有承诺。因此,即使有 3GB 可用,它也需要页面文件来允许另一个应用程序运行。

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

顺便说一句,Linux 允许操作系统过度使用后备存储。这样做的缺点是,如果操作系统最终做出无法兑现的承诺,它可能需要强制终止进程。这就是为什么 Linux 有一个“OOM 杀手“而 Windows 没有。大多数 Linux 机器都有过度承诺已禁用。

答案2

可以通过如下所述破解注册表来关闭低内存警报。

但是,由于注册表修改可能会破坏 Windows 的稳定性,因此最好先备份并创建系统还原点,以便在出现问题时可以返回。我没有亲身经历过这种黑客行为。

启动 regedit 并将自己定位到此功能键:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WDI\DiagnosticModules

导出(用于备份)然后删除以下子项:

{45DE1EA9-10BC-4f96-9B21-4B6B83DBF476}
{5EE64AFB-398D-4edb-AF71-3B830219ABF7}
{C0F51D84-11B9-4e74-B083-99F11BA2DB0A}

现在重新启动。

如果您发现您没有权限删除这些注册表项,请参阅文章
在 Windows 7 中获取注册表项的所有权

您应该意识到,如果在没有警告的情况下内存耗尽,Windows 可能会在没有任何事先通知的情况下崩溃,或者程序可能会出现异常行为。

此外,此建议适用于 Windows 7,但从未证明适用于 Windows 8.1。

来源

相关内容