当我运行 Windows 时,我通常会一直打开多个程序。我安装了 4GB 内存(并且能够使用全部内存),而且它几乎每次使用的内存都不超过 2.5 GB。但是,每次我切换到一个已经最小化了一段时间的程序时,Windows 都会疯狂地尝试读取硬盘。我不是操作系统专家,但据我所知,如果硬盘仍在使用并且有足够的空间供其他程序使用,它就不应该使用硬盘来缓存内存并将其从 RAM 中删除。无论如何,有没有办法强制 Windows 不这样做,或者有其他解释为什么会发生这种情况?
谢谢!
答案1
Windows 会交换一段时间内未使用的应用程序数据,以释放 RAM 用于文件缓存。因此,媒体播放器或下载工具等文件操作应用程序可能会使用您的 RAM 来运行未使用的应用程序,这些应用程序的反应会很慢。
大多数人会反过来调整,增加文件缓存以满足时间关键的读/写目的。例如,这里有一些提示:http://smallvoid.com/article/winnt-system-cache.html。也许您可以使用这些解释来反过来调整它,例如减少文件系统缓存,以便不交换您的应用程序。
答案2
在 Windows 7 中,转到“系统属性”。在高级选项卡中,单击“性能”部分的“设置”。在“处理器调度”下,选择“调整...”“后台服务”。
这仅基于个人经验,我无法确认或引用 MSDN 或其他已发布来源的确切参考。顺便说一句,只是澄清一下,我的个人经验相当重要,因为多年来我管理过许多服务器和工作站。
我的理论是,通过调整“后台服务”,Windows 可以使后台应用程序(包括最小化的应用程序)保持适当的优先级,从而减少它们被换出的机会。
另一个来自阅读有关交换文件的非常“模糊”的记忆。即使是 EXE 也会被交换出去,即如果某个进程没有主动使用其可执行代码的某些部分,那么该部分可能会被交换出去(而不是真正写入交换文件)。换句话说,用于保存代码(而不是数据)的 RAM 也会被释放并用于其他进程。稍后当您切换到该应用程序时,它会运行不再位于内存中的部分代码,Windows 必须根据需要重新加载它。这也会导致滞后。我相信设置后台服务也会减少这种影响。
其次,由于您使用的内存不超过 2.5 G,您可以将交换文件设置为 Windows 允许的最小文件(留下足够的空间以便能够在出现 BSOD 时写入小的内存转储)。
您可以完全删除页面文件,但我不建议这样做,因为正如我上面提到的,Windows 会抱怨无法写入崩溃转储。