当有空闲物理 RAM 时,为什么 Windows 7 使用页面文件?

Ton*_*ich 43 memory windows-7 task-manager resource-monitor

我正在使用带有 8G 内存的 Windows 7 64 位。使用了一段时间后,我觉得 Windows 越来越迟钝了。驱动器在颠簸。当我查看资源监视器和磁盘活动时,我看到了一些使用页面文件 (c:\pagefile.sys) 的实例。我检查了物理内存,我看到大约 2.3G 可用内存和 700M 空闲内存。

为什么 Windows 不使用更多的可用内存和更少的页面文件?它是否需要留下一些 x 数量的空闲内存,那会是多少?它是物理内存的百分比吗?

我的计划是为主驱动器获取更多内存和 SSD。与此同时,我正遭受性能缓慢的困扰。

Dar*_*oid 33

首先,不要将页面文件放在 SSD 上。虽然 SSD 在磨损均衡方面已经变得更好,但页面文件被频繁写入,并且它会比一般使用更快地降低您的 SSD。

很多人不明白的是,windows 从来没有真正的空闲内存。有一些 MB 可用于突发需求,但除此之外,活动使用中的应用程序内存与总内存之间的差异通常被所谓的“备用”内存消耗。

系统内存

这些是可以在需要时转储的内存页(备用内存是一个很好的大缓存),因此从应用程序的角度来看,它是可用的,但无论如何它们都没有被使用。通常,它们用作磁盘缓存或页面文件缓存。

Windows 的目标是根据使用模式保留最有可能在此备用缓存中使用的数据。举一个人为的例子,让我们比较一下像 Windows Update 这样的程序的私有内存(通常配置为每周运行一次)的相对值,与在此备用内存中缓存桌面内容的相对值:

大多数情况下,Windows Update 都在休眠。它占用了内存,并且在大多数情况下,它在等待时间表到来时绝对没有任何价值。另一方面,您的桌面文件夹的内容可能会不断被查询,特别是如果您想将文件保存到其中。

在这种情况下,Windows 将做的是将分配给 Windows 更新的内存分页(即使内存未“满”,并使用 RAM 中的可用空间来缓存桌面内容。这会导致更好的性能你。

Windows 正在做出数以千计的此类决策,并为后台服务不断写入的数百个文件管理磁盘缓存,同时试图在此与活动应用程序的内存需求之间取得平衡。有时它会暂时出错,当我们切换到在后台休眠一段时间的应用程序时,我们可能不得不等待它将数据分页回内存。但是您必须考虑的是,如果它将该应用程序完全保留在内存中,又有多少其他应用程序会陷入困境,等待磁盘写入和读取完成,或者它们自己会被迫换页?如果这些是您在此期间使用的应用程序怎么办?


应用程序经常分配很少使用的内存页,例如启动代码(使用一次然后不需要)、关闭代码(使用一次然后不需要)或更新代码。当有更重要的用途时,将所有这些都保存在内存中是不切实际的,因此一旦 Windows 识别出应用程序当前操作不需要的代码部分,它就会很高兴地将这些部分分页到页面文件中,即使从技术上讲,它可以将它们保留在内存中。

(实际上,根据应用程序,系统可能经常分配比实际更多的内存,预计其中大部分会被调出。如果您正在查看详细的内存故障,“提交”或“提交”费用是 Windows 分配给各种应用程序的内存量。页面文件用于为该内存提供保证,即使它没有足够的物理 RAM 来覆盖它。)


我刚刚注意到您确实在问题中区分了可用内存和可用内存;如果您觉得受到了教训并且已经知道其中的区别,我深表歉意。理想情况下,空闲内存始终为 0。然而,虽然备用内存是可以释放的内存,但并不总是可以快速释放的内存。如果我尝试将一个 1GB 的文件写入磁盘,Windows 会尽可能将其粘贴在内存中的磁盘缓存中,然后在后台慢慢将其写入硬盘驱动器。如果应用程序需要请求 50MB 的额外内存,但由于这个巨大的磁盘缓存仍在刷新而没有可用的内存,那么应用程序将挂起,直到它可用为止。从用户的角度来看,手头保留一个小缓冲区可以让系统以最小的延迟解决这个问题。

  • @FrankComputer:如果您的系统运行良好,那不是因为可用内存。空闲内存是系统*不*使用的内存,它对性能的影响不会比放在桌面上的内存更大。提高内存性能的唯一方法是*使用*它,所以如果它是免费的,它就不会被用来提高性能。释放更多内存意味着使用更少,从而使性能变差。 (8认同)
  • @FrankComputer 查看我为我的 8GB 工作系统发布的屏幕截图:6300MB 使用中,1700MB 备用磁盘/缓存,42MB 空闲。看看我的家庭系统(32GB 内存),你实际上是正确的,但只是在错误的阈值:9.2GB 使用中,14.5GB 磁盘缓存,8.6GB 空闲。如果 Windows 只是用完要缓存的内容,您将拥有可用内存,但该阈值非常高。Windows 不会经常交换,因为磁盘缓存不是交换空间——它是在请求文件时被动缓存而不是在缓存中。您不会注意到它从缓存中提取的次数,并且没有 HDD 活动。 (6认同)
  • 我在家用电脑上将我的 SSD 升级为更大更快的固态硬盘。升级将在 SSD 发生故障之前进行。每个 SSD 的 SSD 越来越便宜,速度越来越快,体积越来越大。所以这种关于他们穿着的频繁争论应该在某个时候停止,因为它不再相关了。 (2认同)