我使用的是 64 位 Windows 7,内存为 8G。使用一段时间后,我感觉 Windows 变得迟钝了。驱动器正在抖动。当我查看资源监视器和磁盘活动时,我看到页面文件 (c:\pagefile.sys) 的使用情况。我检查了物理内存,发现大约有 2.3G 可用内存和 700M 可用内存。
为什么 Windows 不使用更多的可用内存而使用更少的页面文件?它是否需要保留一定数量的可用内存,那是多少?它是物理内存的百分比吗?
我的计划是购买更多内存和 SSD 作为主驱动器。但与此同时,我的电脑性能却很慢。
答案1
首先,不要将页面文件放在 SSD 上。虽然 SSD 在磨损均衡方面已经有所改进,但页面文件还是被写入频繁地并且它会比一般使用情况下更快地降低 SSD 的性能。
很多人不明白的是,Windows 实际上从来就没有空闲内存。只有几 MB 的内存是为应对突发需求而保留的,但除此之外,活跃使用的应用程序内存和总内存之间的差额通常被所谓的“待机”内存所消耗。
这些是可以在需要时转储的内存页(备用内存是一个很大的缓存),因此从应用程序的角度来看,它们是可用的,但它们绝不是未被使用。通常,它们用作磁盘缓存或页面文件缓存。
Windows 的目标是根据使用模式将最有可能使用的数据保存在此备用缓存中。举个例子,让我们比较一下 Windows Update 等程序(通常配置为每周运行一次)的私有内存与在此备用内存中缓存桌面内容的相对价值:
在大多数时间里,Windows 更新都处于休眠状态。它占用内存,在等待更新计划的过程中,大多数情况下,它不会执行任何有价值的操作。另一方面,您的桌面文件夹的内容可能会被不断查询,特别是当您喜欢将文件保存到其中时。
在这种情况下,Windows 将会把分配给 Windows 更新的内存分页出来(即使内存没有“满”,并使用 RAM 中可用的空间来缓存桌面的内容。这会为您带来更好的性能。
Windows 正在做出数千个这样的决定,并管理数百个文件(这些文件由后台服务不断写入)的磁盘缓存,同时试图平衡这些文件和活动应用程序的内存需求。有时它会一时出错,当我们切换到在后台休眠了一段时间的应用程序时,我们可能不得不等待它将数据重新分页到内存中。但你必须考虑的是,如果它将该应用程序完全保留在内存中,又有多少其他应用程序会陷入等待磁盘写入和读取完成的困境,或者它们自己被迫分页?如果这些是你同时使用的应用程序,该怎么办?
应用程序经常分配很少使用的内存页面,例如启动代码(使用一次后不再需要)、关闭代码(使用一次后不再需要)或更新代码。当有更重要的用途时,将所有这些都保留在内存中是不切实际的,因此一旦 Windows 识别出应用程序当前操作不需要的代码段,它就会很乐意将这些段分页到页面文件中,即使它在技术上可以将它们保留在内存中。
(实际上,根据应用程序的不同,系统可能会频繁分配比实际拥有的更多的内存,并期望其中大部分内存最终会被分页。如果您正在查看详细的内存细目分类,“提交”或“提交”费用是 Windows 已分配给各种应用程序的内存量。页面文件用于为该内存提供保证,即使它没有足够的物理 RAM 来覆盖它。)
我刚刚注意到您在问题中确实区分了可用内存和空闲内存;如果您觉得受到了说教并且已经知道了两者的区别,我深表歉意。理想情况下,空闲内存始终为 0。但是,虽然待机内存是可以释放的内存,但它并不总是可以快速释放的内存。如果我尝试将 1GB 文件写入磁盘,Windows 会将其保存在内存中的磁盘缓存中(如果可以),然后在后台慢慢将其写入硬盘。如果应用程序需要请求 50MB 的额外内存,但由于这个巨大的磁盘缓存仍在刷新而无法使用,那么应用程序将挂起,直到可用为止。保留一个小的缓冲区可以让系统以最小的延迟从用户的角度解决此问题。如果 Windows 只是清空了部分待机缓存或释放了大量正在使用的内存,但尚未用新缓存数据填充它,您也可能会得到比正常情况更大的缓冲区。
答案2
这叫提前计划。
当 RAM 仍有足够空间时将内存页面写入页面文件是件好事。一旦程序请求的内存超过可用内存,操作系统就会尽快开始清除空间。现在做好准备总比以后好。
如果操作系统一直等待,那么您就会遇到性能瓶颈。如果某个程序请求的内存多于可用内存,那么现在您必须等到操作系统写出更改的内存块,然后释放它们。
答案3
SysInternal 有一个设置磁盘缓存的工具。
cacheset.exe
你可以在这里找到它:
http://technet.microsoft.com/en-us/sysinternals/bb897561.aspx
答案4
参数 (这里和这里) 即使有足够的 RAM 也要保留和使用页面文件,方法是:
- 即使现在有空闲内存,机器稍后也可能会用完内存。最好提前将很少使用的内存部分放到磁盘上。
- 还有“待机”内存,看起来是空闲的,但实际上用于磁盘缓存。这对性能也很重要,最好有一些。
- 如果在禁用页面文件的情况下内存耗尽,则会导致硬崩溃。
- 虽然 2、4、16 或任何其他数量的 RAM 可能看起来“很多”,但事实可能并不像您想象的那么真实。您需要进行分析。
使用 Windows 资源监视器,可以查看有多少 RAM 用于缓存(显示为“待机”)。
如果您发现 RAM 确实在使用或处于待机状态,则页面文件对您很有用。如果您的任务和可用 RAM 的组合使得很大一部分内存显示为未使用(“空闲”),我认为没有必要仅仅出于对“更了解并在这里这么说”的人的尊重而磨坏硬盘。