在运行 Windows (10) 的计算机上,我遇到了内存使用问题。我不想让 Windows 在 RAM 可用量很高的情况下进行无用的 IO:我禁用了交换文件(任何磁盘上都没有分页文件)。
使用应用程序执行操作时,内存使用量会增加。某些时候,某些应用程序会因 OutOfMemory 异常而崩溃,或者变得不稳定并需要手动停止。
当它发生时,我看到的是:
- 安装的 RAM 为 64 GiB
- 2 个 DDR4 2667 16 GiB 模块
- 2x DDR4 3200 16 GiB 模块(稍后添加)
- 任务管理器显示
- 图中显示内存使用量几乎已满(约 53/64 GiB)
- 约 36 GiB“正在使用”(压缩后为 0 MiB)
- 大约 11 GiB“可用”
- 大约 24 GiB“缓存”
- 约 61 GiB “已承诺”
- 大约 2.2 GiB“分页池”
- 大约 2.1 GiB“非分页池”
- 没有显著的磁盘活动
- SuperFetch/SysMain 已启用
- Windows 10 专业版 22H2
内存中最大的应用程序通常是:Firefox、Jetbrains Rider、Teams、VS Code、一些 DBMS。
为什么有这么多内存可用,我的应用程序还是会崩溃?
=>这个答案表示空间不足,无法允许应用程序提交更多内容
是否有一些操作系统调整可以减少提交的需要?
还是每个应用程序都有特定的调整?
答案1
你必须启用页面文件。否则,您将浪费物理 RAM 用于程序预留但未使用的内存。您没有耗尽内存,而是耗尽了提交限制。
[…] 页面文件是必不可少有效利用身体的内存。这是因为大多数程序预留的内存比它们实际使用的内存要多(这称为“承诺费用”)。Windows 不允许“过度承诺”(做出可能无法兑现的承诺),因此所有预留都必须由物理内存或页面文件支持。
在屏幕截图中,您可以看到虽然仅使用了约 9 GiB 内存,但总共保留了 12 GiB。
允许 Windows 管理页面文件大小,或者,如果您确实想要,花一些时间找出程序保留的内存量并将其设置为固定大小。