如何控制RAM /交换使用


18

是否有一种方法(应用程序)来控制应用程序级别的RAM /交换使用策略。

我有一些我一直使用的应用程序,我希望它们一直保留在RAM中,还有我很少使用的应用程序,它们可能会被抛出以满足需求。我知道默认配置的窗口应该给我最好的性能,但我想检查是否可以获得更多:)。

我用的是Windows 7。


2
+1。我对一个适用于XP的方法感兴趣。
Xavierjazz

Answers:


9

有:有程序调用 VirtualLock 功能:

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

我相信 SetProcessWorkingSetSize 功能也可能有帮助。


对于那些认为我甚至是异教徒的人 提示 这个 威力 有用:

请注意,在内存中锁定页面可能有正当理由。一个正当的理由可能是用户正在运行CD刻录机,并且CD刻录机不断页面输出因此导致缓冲区欠载,从而创建过山车。在这种情况下,锁定内存缓冲区以使它们不被分页是有效的,即使这意味着计算机的其余部分也会慢慢爬行,因为这仍然比给用户一个过山车更好。还有其他正当理由 - 我的观点是,虽然它是 平时 不推荐将页面锁定在内存中,有效的情况仍然存在,我不认为杀死这个想法会对OP有帮助。


更新:看一看 流程黑客 Reduce Working Set 菜单选项。


也许从文章中引用这一点会将其置于上下文中:“将页面锁定到内存中可能会降低系统性能,因为它会减少可用内存并迫使系统更换其他内存 关键页面 到页面文件。每个版本的Windows都限制进程可以锁定的最大页数。这个限制是故意小的,以避免严重的性能下降。“(我的重点)

1
@Randolph:我从来没有 推荐的 它,我刚才提到过,不像大多数人似乎认为的那样,它是 可能 。我个人只是讨厌告诉OP“让我们杀了你的想法” - 我认为OP的理解是他不应该这样做,但如果他仍然愿意,我认为他有权知道如何做。 (有个 原因 他们创造了这些功能,我不是判断OP是否应该使用它们的人。)
Mehrdad

Windows中有很多代码用于向后兼容。如果有理由拥有它,那就是它。可以将它与SQL Server中的Shrink功能进行比较,该功能在任何情况下都不应该使用,但出于兼容性原因而保留。 Windows 7是一个具有适当内存管理的现代操作系统,不应删除页面文件,程序也不应该在“规则”之外留在内存中。这种做法非常糟糕,可能会导致系统不稳定和/或无法使用。

1
@Randolph :(我看你放弃了类比。:])制作一个小程序(不应超过~10行)打开其他进程并调用 SetProcessWorkingSetSize。这是一种方式。如果当然,如果你不知道这意味着什么,因为你不是开发人员,那么显然没有什么可以做的。但它仍然有可能,并且说它不可能仍然是不正确的,它只需要比OP可能拥有更多的知识。
Mehrdad

1
@Randolph,你可以下载强制运行应用程序的各种免费应用程序转到页面文件(通过在每个进程中调用SetProcessWorkingSetSize)。
Chris O

5

我找到的唯一方法是禁用页面文件。但是,它不是一个完美的解决方案:如果你接近或超过你的RAM限制,你将收到错误消息,它可能无法正确保存故障转储,所以如果你需要进行故障排除,请重新打开它。除此之外,我几个月来一直使用Win7没有页面文件。

我的经验:我有一个钢琴软件(1GB RAM使用率)的这个问题,在没有使用一段时间后会投入交换。几小时后弹奏钢琴键会导致混乱,因为交换不会重新加载足够快的声音来播放声音。 (然后我会把我的整个手臂放在每个钥匙上以强制重装!)

如果RAM是一个问题,我建议你购买更多(例如8到12GB的Windows 7 x64)。对于具有RAM意识的人来说,拥有大量的RAM是天赐之物。

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


3
做。不。删除。的。页。文件。永远。

7
我有。是。使用。 Win7的。有了。编号页面文件。对于。个月。没有。 A. Hitch。
mtone

1
我也一直使用没有页面文件的Win7,但在我看来,它对我目前的工作可能还不够:(
Darqer

3
@Randolph:MS知道他们在谈论什么,因为他们知道他们的客户并不总是电脑专业人士。但对于那些真正确切知道页面文件是做什么和不做什么的人来说,没有理由强迫他们进入他们不需要的练习。
Mehrdad

2
@Randolph:如果你在没有安全带的情况下驾驶超过速度限制,你可能会死并杀死其他人,更不用说增加其他人的保险费用了。如果您的计算机将其内存分页,可能会发生的最糟糕情况是,您将失去一些时间,具体取决于具体情况。你不觉得这里有类似的东西(读了很多)错了吗?还有,你使用过Linux / Unix吗?与Windows不同,有没有注意到他们如何给你提供足够的绳索让自己挂起来?人们仍然使用它们 - 就像在影响下驾驶一样?
Mehrdad

2

页面文件的使用取决于很多因素。如果您使用大量程序并且同时没有足够的RAM用于所有程序,那么它们中的一部分(或全部)可能会被换出到页面文件中。

如果你有4GB的RAM,让我们说大约3GB可用,因为视频卡和其他资源用户阻止4GB的部分,你只使用一些不占用大量内存的程序,理论上你永远不需要交换文件。但是,Windows Vista和7在将程序交换到磁盘方面非常具有攻击性。

我曾经有一个设置,减少了Windows 7的swappiness(swappiness是一个Linux术语,但它同样适用于Windows,并且由于有一个注册表设置来驯服Windows交换侵略性,似乎微软同意勉强,虽然在一个井隐藏的方式),但我似乎无法找到它。搜索它是我在这里结束的方式。我发现这个设置的最佳替代方法是确保使用固定大小的交换文件(我在32位操作系统上使用4096-4096,在64位操作系统上使用12GB,因为我有6GB的系统RAM)在专用分区上。有一个备用的7200rpm 200GB驱动器,我将所有交换分区(Windows XP,7,7位64位和各种Linux)放在这个驱动器上。它似乎对我有用,但YMMV。


1

值得一提的是:当Windows检测到你经常使用某些应用程序时,它会将这些应用程序放入内存中以便加载更快。我认为信任windows可以在这里做点什么。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.