如何控制 RAM/交换空间的使用

如何控制 RAM/交换空间的使用

有没有一种方法(应用程序)可以在应用程序级别控制 RAM /交换使用策略。

我有一些经常使用的应用程序,我希望它们始终保留在 RAM 中,还有一些我很少使用的应用程序,它们可能会根据需要被交换。我知道默认配置的窗口应该能给我带来最佳性能,但我想检查一下我是否可以获得更多 :)。

我使用 Windows 7。

答案1

是的有:让程序调用虚拟锁功能:

进程锁定的页面将保留在物理内存中,直到进程将其解锁或终止。这些页面在锁定期间保证不会被写入页面文件。

我相信设置进程工作集大小功能也可能有帮助。


对于那些认为我是异端者的人来说建议可能有用:

请注意,锁定内存页面可能有正当理由。一个正当理由可能是用户正在运行 CD 刻录机,而 CD 刻录机不断调出页面,因此导致缓冲区欠载,从而产生杯垫。在这种情况下,锁定内存缓冲区以防止它们调出页面是合理的,即使这意味着计算机的其余部分会变得非常缓慢,但这仍然比给用户杯垫要好。也可能有其他正当理由——我的观点是,虽然它通常不建议锁定内存中的页面,有效的情况仍然存在,并且我认为放弃这个想法不会对 OP 有帮助。


更新:查看进程黑客Reduce Working Set菜单选项。

答案2

我发现的唯一方法是禁用页面文件。然而,这并不是一个完美的解决方案:如果接近或超出 RAM 限制,您将收到错误消息,并且它可能无法正确保存故障转储,因此如果您需要排除故障,请将其重新打开。除此之外,我已经使用没有页面文件的 Win7 几个月了,没有任何问题。

我的经验:我使用一款钢琴软件(占用 1GB RAM)时遇到过这个问题,一段时间不使用后,该软件就会被放入交换区。几个小时后弹奏钢琴键会导致故障,因为交换区无法快速重新加载,无法播放声音。(然后我会把整个手臂放在每个键上,以强制重新加载!)

如果担心 RAM 问题,我建议您购买更多(例如,Windows 7 x64 需要 8 到 12GB)。对于注重 RAM 的人来说,拥有足够的 RAM 是天赐之物。

但在此之前,您应该考虑购买一个 SSD 驱动器并将交换放在上面。它将大大加速交换恢复,并提供许多其他系统优势。不使用时,RAM 不会提供好处。

答案3

页面文件的使用情况取决于很多因素。如果您使用了很多程序,但没有足够的 RAM 同时运行所有程序,那么部分程序(或全部程序)可能会被交换到页面文件中。

如果您有 4GB 的 RAM,假设由于显卡和其他资源用户阻塞了 4GB 的部分内存,因此只有大约 3GB 可用,并且您只使用一些不占用大量内存的程序,那么理论上您永远不需要交换文件。但是,Windows Vista 和 7 在将程序交换到磁盘方面非常激进。

我曾经有一个设置可以减少 Windows 7 的交换性(交换性是一个 Linux 术语,但它同样适用于 Windows,并且由于有一个注册表设置可以控制 Windows 的交换激进性,因此微软似乎勉强同意了,尽管以一种隐藏得很好的方式),但我似乎再也找不到它了。寻找它是我最终来到这里的原因。我发现的此设置的最佳替代方案是确保在专用分区上使用固定大小的交换文件(我在 32 位操作系统上使用 4096-4096,在 64 位操作系统上使用 12GB,因为我有 6GB 的系统 RAM)。我有一块备用的 7200rpm 200GB 驱动器,我把所有的交换分区(Windows XP、7、7 64 位和各种 Linux)都放在这个驱动器上。这似乎对我有用,但 YMMV。

答案4

值得一提的是:当 Windows 检测到您频繁使用某些应用程序时,它会让超级读取将这些应用程序放入内存中,以便它们加载速度更快。我认为相信 Windows 会在这里发挥作用。

相关内容