在我的 Windows 7(64 位)PC 上,当我运行几个资源消耗很大的程序和六个其他程序时,当我切换到一个很久没用过的应用程序时,它需要很长时间才能响应,而且我能听到硬盘在不停地运转。我猜它正在从页面文件获取数据。在 Windows 任务管理器中,它显示我使用了大约 75% 的物理 RAM,其余部分在缓存和空闲之间大约各占一半。
即使 RAM 可用,它是否已将数据从 RAM 移出并仅存储在磁盘上?如何使其他程序响应更快?将 RAM 从 4GB 增加到 8GB 是否会在从一个程序切换到另一个程序时加快速度?
答案1
Windows 必须在吞吐量和延迟之间做出权衡。
如果将应用程序保留在 RAM 中,即使它们长时间未使用,吞吐量也会受到影响。已使用但闲置的物理 RAM 会减少其他应用程序和系统可用的 RAM。
Windows 决定将长时间未访问的内存移出页面。这样可以将更多的物理 RAM 用作磁盘缓存,并显著提高应用程序的吞吐量。
代价是,当这些应用程序最终需要访问一段时间未访问的内存页面时,它们可能不常驻。在这种情况下,应用程序必须等待一段时间,因为它们会被读回 RAM。
Windows 通常能很好地完成这些权衡,我不建议对其进行过多的调整。您可以改善延迟,但吞吐量会受到巨大影响,更糟糕的是,您可能会陷入某些功能无法正常工作的状态。(例如,如果您禁用分页文件,两个月后您可能会发现您正在编辑一张大图像或其他东西,并且只是无法保存它,因为内存分配总是失败。)
当然,你随时可以添加更多 RAM。现在 RAM 非常便宜。这使得 Windows 不太可能需要做出任何权衡。
答案2
Windows 会将程序从内存中分页到磁盘上。我不知道它使用的算法,但如果它查看应用程序闲置的时间长度,我不会感到惊讶。
Windows 将尝试最大化可用的物理 RAM 数量,因为这很有用,因此将内存升级到 8GB 甚至 12GB 将提高系统的响应能力 - 特别是在运行多个“耗资源”应用程序时。
答案3
您可以在 Windows 任务管理器中检查哪个程序使用了这么多的 RAM。
从个人经验来看,我发现在具有 4GB 以上 RAM 的 PC 上不需要交换文件。您可能需要完全禁用交换,以查看它是否是问题的原因。
此外,我更愿意关闭一些 Windows 服务,因为它们往往会产生大量不必要的磁盘 I/O:Superfetch、ReadyBoost、Windows Search、Windows Defender、卷影复制和分布式链接跟踪。