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