我正在研究 Windows 10 内存压缩的使用情况,以决定“换出”内存的最佳方式。
一方面,我可以将一切交给 Windows,依靠页面文件和压缩内存,但这意味着我无法控制何时换出什么。
另一方面,我可以运行没有页面文件的系统,并通过更快地将临时更改保留到数据库来减少内存使用量。然后我可以更好地控制要保留的内容和从内存中删除的内容。
在后一种情况下,我仍然可以从内存压缩中受益,前提是即使没有页面文件也可以使用内存压缩。如果是这样的话,那么内存压缩将允许我的进程使用比物理可用内存更多的内存(当然是在很短的时间内)。
那么问题是:如果系统没有页面文件,Windows 10是否会使用内存压缩?
答案1
需要启用页面文件才能启用内存压缩。我刚刚在 Windows 10 版本 1809 上验证了这一点。
我通常在关闭页面文件的情况下运行此系统,尽管在 MMAgent 中启用了内存压缩,检查 SysMain 服务是否正在运行以及在注册表中启用了所有预取和 readyboost 设置,任务管理器始终显示“未启用内存压缩”,并且我从未在任务管理器的内存选项卡中看到“(压缩)”内存统计信息超过 0 MB。
设置 16 MB(允许的最小大小)的分页文件后,任务管理器选项卡中的工具提示现在显示预期的“压缩内存存储了估计....的数据...”消息。
我仍未验证的是分页文件的大小如何影响允许的最大压缩内存量。
另一个相关说明:可以使用 regedit 禁用 Prefetch 和 ReadyBoost。它们不会影响内存压缩的操作。但是,“SysMain”服务(在较旧的 Windows 版本中,令人困惑地称为 readyboost)必须启用,否则内存压缩将不会启用。