禁用 Windows 页面文件有什么问题?

禁用 Windows 页面文件有什么问题?

人们说你总是需要页面文件,并且它将提高性能,但我的 Windows 7 设置为不带页面文件运行。我简直不明白为什么人们会这么说——我有 6 GiB 的 RAM,而且我唯一一次甚至关闭当我编译 Chromium 时,我遇到了 RAM 耗尽的问题,为此我临时启用了一个页面文件。

在一般情况下,我真的需要页面文件*来提高速度吗?为什么?

*我知道崩溃转储需要页面文件。不过,我从来不用崩溃转储,所以这无所谓。

答案1

页面文件永远不会提高性能,但也不一定降低性能(在适当的内存管理下)。但是,在没有页面文件的情况下运行只会增加系统的不稳定性,因为应用程序会请求无法使用的内存。

除非您的操作系统在内存管理方面特别糟糕,否则具有 6GiB 内存的页面文件应该用处不大。这并不是说它根本用不到;如果我没记错的话,即使有足够的内存可用,MS Windows 在分页方面也有点疯狂。(为什么,我永远也不知道。)

但是,当您没有使用页面文件时,可能会发生以下情况,这足以成为启用它的理由:严重崩溃。大多数应用程序都希望获得它们请求的内存。如果没有,它们就会崩溃。(啊,但过去的生活环境是几千字节已经消失了......并且对于太多的开发人员来说,处理内存管理的实践也已经消失了。)

如果应用程序构建正确,它就会很好地失败。(幸运的话,它根本不会失败。但不要指望它。)对于大多数应用程序,您都会遇到一次奇妙的失败。此外,接近该限制的应用程序越多,您就越有可能看到整个系统的不稳定。

以我自己的经验为例。Windows XP,4GiB,无页面文件。性能很好。直到我们开始接近 4GiB 的限制。然后事情变得疯狂:应用程序会崩溃,菜单项只会部分显示(或根本不显示),按钮不起作用,等等。我切换回页面文件,即使它的性能更差——整体稳定性更好,也更重要。

现在,也许您不使用任何应用程序,或者在您的应用程序中执行需要 6GiB 的工作,但我可以想到一些可能接近 6GiB 的情况:视频编辑、摄影编辑、音频混合和制作等 - 基本上是任何需要处理大量数据(无论是处理还是流式传输)的情况。当这些数据超出您的内存容量时,您的应用程序很可能会“噗”地一声消失。

答案2

本文Mark Russinovich 所著的《关于页面文件的一切信息》将告诉您一切您想知道的信息。

我不知道“缓存”是否是描述页面文件功能的正确术语。缓存是用于快速访问数据的临时存储点。当物理 RAM 的争用过多时,操作系统会将数据“故障”到页面文件中。因此,它是 RAM 溢出的权宜之计,可防止程序因内存不足而严重崩溃。但我确实相信 Windows 会尝试将一段时间内未访问的内容放入页面文件中(Linux 也可能这样做),因此从这个意义上说,它是一个缓存,但并不是它的主要功能。

无论如何,请阅读本文。它将为您提供有关如何设置页面文件的良好指导。正如@Sandeep Bansal 所说,偶尔会有游戏要求您将其作为“要求检查”的一部分才能运行(但我不知道有任何游戏)。

编辑:这个例子可以帮助您理解页面文件的作用:

假设您的 RAM 为 512MB。您打开了多个程序,包括一个最小化的浏览器本身,该浏览器占用了 250MB RAM,此时所有正在运行的程序的总 RAM 使用量为 500MB。

然后,您启动另一个程序(例如文字处理器),该程序需要分配 150MB 的 RAM。内存不足。但是,如果我们有分页系统,那么包含最小化浏览器的内存页面可以分页到磁盘。这样新程序就可以加载了。

现在假设您想过一会儿再返回浏览器。那么,它需要“调入”刚刚发送到磁盘的内容。如果当时有足够的可用 RAM,它可以毫无问题地做到这一点。如果没有,则必须先将其他内容调出。如果有很多程序在争夺 CPU,并且不断进行调页,那么系统就会变慢,并且会出现称为“抖动”的情况。 所有这些页面调入调出都会导致性能下降,但它可以避免程序因内存不足错误而“硬”崩溃。这就是页面文件的目的。 过多的分页,即“抖动”可能并不比程序因为大多数时候无法获得更多 RAM 而放弃更好。

现在你可以看到,如果存在算法,预料如果在特定时刻可能没有使用某些内容,那么操作系统可以“预先分页”它认为不会立即使用的内容。因此,这解释了为什么 Windows 即使有足够的 RAM 也会使用页面文件。它试图让尽可能多的 RAM 可用。Windows 就像 Linux 一样,其中的空闲 RAM 充当磁盘缓存,因此如果平衡得当,它可以提高整体性能。这都是操作系统设计的一部分,也是为什么需要数千名程序员花 10 年时间才能开发出一个好的操作系统。

因此,实际上回答您的问题,禁用页面文件的唯一错误就是这个。回到我提供的示例,如果没有页面文件,您将无法启动浏览器,或者编写不当且未防御性地编程以预测 OOM 错误的程序可能会出现非常奇怪的行为。

答案3

页面文件不仅仅是用于存储崩溃转储,它本质上并不是为此而制作的。

页面文件的存在是为了能够存储 RAM 不需要保存的数据,它就像是内存中不需要存在的项目的缓存,从而为其他事物提供更多的 RAM。

您说得对,如果您有 6GB RAM,您可能不需要页面文件,但您可能需要某些项目的页面文件,我记得一些游戏需要页面文件,如果有的话也会很有用。

如果某个进程需要它,那么创建一个 500MB 的页面文件以避免出现问题并没有什么坏处。

答案4

个人经验

目前,我的笔记本电脑配备 8GB RAM,无法创建/使用页面文件。我的生活简直是地狱。我经常收到“内存不足”提示,应用程序崩溃等。使用 3 个占用 1-1.5 GB 的程序(例如,Web 浏览器、带有特殊插件的 Visual Studio 等)就像是如履薄冰。

另一个论点

使用物理 RAM 缓存中的数据非常快。“空闲”的物理 RAM 越多,缓存容量就越大。操作系统从物理 RAM 移到页面文件的休眠数据越多,释放的物理 RAM 就越多,用于缓存频繁访问的数据。

假设你玩某个游戏,当你改变位置时,它会加载位置数据。你还运行着网页浏览器,这会给游戏留下 2GB 的空间,这对于一个位置来说已经足够了。如果没有页面文件,每次你改变位置时,数据都会从硬盘缓慢加载。有了页面文件,你未使用的网页浏览器数据将被发送到页面文件,宝贵的物理 RAM 将用于存储多个位置的数据,从而大大加快位置加载速度。

相关内容