如何阻止 Windows 8 缓存大文件?

如何阻止 Windows 8 缓存大文件?

编辑

我所说的视频文件与 LoL(游戏)无关。它们是我个人下载的单独文件。在游戏崩溃时使用的 8GB 内存中,游戏使用的内存不到 500MB。Chrome 使用了 1GB。系统服务使用的内存不到 500MB,我运行的其他所有程序使用的内存不到 1GB。我所有程序/游戏的平均内存消耗约为 2.5GB - 3GB。

编辑

我关闭游戏并关闭所有其他应用程序后,占用了 6GB。游戏崩溃时,占用了全部 8GB(非待机或空闲 / 需要时无法使用)其中 5GB 是缓存的 MKV 视频文件未处于待命/空闲状态。游戏会因“内存不足”而崩溃,因为我禁用了虚拟内存(交换文件)(问题不在于游戏会崩溃,而在于为什么这些大型 MKV 视频文件占据了整个内存池,导致游戏崩溃)。

总结

Windows 8 将大量大型 MKV 文件缓存为活动内存(而非待机内存)。这些 MKV 未在任何程序中打开,这是在多次重启后未打开 MKV 的结果。使用 RAM MAP 释放所有“工作集”可清除 RAM 缓存中的所有 MKV,并将我的 RAM 使用量从 6GB 减少到 2GB。

我该如何防止这种情况发生?

介绍

我正在运行带有 8 GB RAM 的 64 位 Windows 8。

我使用的程序不多。我使用的“重度”程序只有 Chrome、英雄联盟,也许还有 Malwarebytes。不是很多。

但我的游戏一直崩溃内存不足错误。我对此感到很困惑,因为我知道我做这些事的时候并没有使用 8GB 的​​ RAM。

于是我查看了任务管理器,把脑子里的大部分东西都加进去,结果发现资源监视器报告使用了大约 2GB,而实际使用了 6GB(没有运行“重型”程序)。现在真的很困惑。

了解更多详细信息拉姆地图程序。它告诉我映射文件如果全部处于待机状态,则使用 4GB 对我来说并不麻烦,或者随时准备发布。但事实并非如此...全部 4GB 都是积极的不在支持

于是我深入挖掘,发现文件列表器并通过活动内存列出它并找到了罪魁祸首......

答案1

Windows 程序运行时不会因为 RAM 不足而“内存不足”。它们只是因为可寻址内存不足。实际上,这种情况只发生在 32 位进程中,因为它们在最佳情况下只能寻址 4GB(2 32),通常只有 2 GB(2 31)。

此外,用于缓存文件的 RAM 在程序需要时可供使用。Windows 仍有 2GB 可用空间,因此它当然不会丢弃缓存文件。为什么要丢弃缓存文件呢?最好在程序要求时使用可用内存。(但您的程序可能无论如何都无法要求超过 2GB 的内存)

请注意,这修复了早期 Windows 版本(最高为 XP)中的一个错误,该错误即使在有其他可用内存时也会错误地释放缓存内存。您似乎希望恢复此错误。

答案2

Chrome 和游戏都不是设计为在没有交换文件的系统上运行的,它假定会有一个交换文件,并使用比运行时“所需的最低限度”更多的内存来帮助提高性能。

您的选择是联系英雄联盟和 Chrome 的开发人员,要求他们重写他们的软件以支持无交换文件(这会导致软件性能下降,因为他们需要让软件在内存管理上花费额外的 CPU 周期)或开始使用交换文件。

请注意,在 Windows XP 及更早的版本中,由于内存管理器存在过于激进的缺陷,禁用交换文件实际上会提高性能,如今,情况已不再如此。没有令人信服的理由不在现代版本的 Windows 上使用交换文件。

答案3

“我禁用了交换区,因为我知道我使用的程序不足以达到 8GB”

是的...您看到的“内存不足”错误告诉您事实并非如此。

您陷入了一个根本性的误解。

“内存不足”消息与 RAM 无关,即使所有映射文件都已取消映射,即使所有 RAM 都是空闲的,也无济于事。

它指的是虚拟内存,或者更准确地说,提交费用,它不能大于提交限制。提交限制是 RAM 的大小(不仅仅是“可用 RAM”!所有 RAM)加上页面文件的当前大小。

您的游戏显然要求分配大量的虚拟地址空间。您的系统没有足够的可用空间来满足请求,因此游戏崩溃。

请注意,游戏崩溃后,您将无法查看问题发生的原因。提交费用将等于或低于提交限制。(始终如此。)由于游戏的分配请求失败,因此它不会反映在当前提交费用中。没有简单的方法可以知道游戏要求多少。

至于为什么以前没有分页文件也能运行游戏,问题不在于“谁在使用 RAM”,而在于“谁在使用提交费用”。注意:文件缓存映射的文件不计入提交费用(因为文件本身是后备存储;如果 RAM 中没有空间,则不必将它们分页到分页文件中)。当然,备用页面列表也不计入提交费用。

解决方法是添加 RAM,或启用页面文件。

更多详情请点击这里:http://azius.com/blog/pagefile-yes1/- 第二部分。但第一部分有助于理解第二部分。

答案4

LAV 和 Haali 等 MKV 分割器将 MKV 文件映射到“待机”内存。Divx Media Foundation MKV 分割器出于某种原因将 MKV 文件映射到“活动”内存,从而消耗了大量 RAM,不允许其根据需要重新分配。

我认为 Divx Media Foundation MKV 分离器的操作不正确,需要告知分离器像其他 MKV 分离器一样映射到待机内存。

我有一些带有 RAMMAP 的截图,详细说明了分离器如何以不同的方式映射内存:

https://superuser.com/questions/778562/standby-memory-mapping-divx-media-foundation-splitter-mkv-playback-on-media

如果没有办法修复这个“活动”映射,我可能会咬紧牙关,升级到 16GB 的 RAM。

相关内容