在 winxp 中,我有 4GB 的 RAM,使用了 1.77GB,但程序不断将内存调出。为什么?

在 winxp 中,我有 4GB 的 RAM,使用了 1.77GB,但程序不断将内存调出。为什么?

标题中全是这句话。如果我的程序会调出内存而不是使用它,那么增加内存有什么意义呢?

具体来说,举个例子:我在浏览器中打开了 12 个标签页。我一边查看其中一个标签页,一边使用其他程序几个小时。我使用的总 RAM 从未超过我的物理内存。然而,当我在几个小时后浏览其他 11 个标签页时,每个标签页都需要 30 秒才能加载,因为我的磁盘严重崩溃。为什么 Windows 会从 RAM 中清除未使用的标签页,而不是为我使用的程序分配新的 RAM?

当然,我并没有真正使用那些未打开的标签,但将几个小时替换为 30 分钟就变得烦人了。

答案1

微软的员工已经就此做出了某些决定。这也与 Windows 针对较短(3-6 小时)的正常运行时间进行优化有关,因为大多数用户不会使用超过这个时间。例如,Linux 会在内存已满时耗尽所有内存并只使用页面 - 但即使采用这种方法也存在问题(如何决定在内存已满时丢弃哪些内容,等等)。

请放心,微软的工程师已经仔细考虑过其利弊,这不一定是一个糟糕的决定。

答案2

你的程序使用内存。Windows 不仅在内存不足时才会换页。阅读Server Fault 上的这个答案有关 Windows 中的页面文件如何工作的更多信息,它比我说得更好。

答案3

常见的“页面文件”误解之一是,它仅在物理内存已满时才使用。事实并非如此。正如您从维基百科条目,这是一个比大多数人意识到的更深层次的话题。

答案4

这是一个常见的抱怨,但它是基于对 Windows 内存管理的一系列误解以及任务管理器告诉我们的内容。在大多数情况下,Windows 在管理内存方面做得很好。但不幸的是,任务管理器并没有很好地展示这一点。部分问题在于内存管理比大多数人想象的要复杂得多,而且遵循的原则与人们普遍想象的完全不同。

只需记住以下几件事:

  1. Vista 中的内存计量表不会显示全部内存使用情况。计量表的上半部分实际上大部分正在使用中。同样,XP 中显示为“可用”的内存大部分正在使用中。
  2. 任务管理器的任何版本都不会显示实际的页面文件使用情况。XP 中标记为“PF 使用情况”和 Vista 中标记为“页面文件”的内容实际上是提交费用。实际的页面文件使用情况通常会低得多。
  3. 页面文件中的大部分数据也位于 RAM 中。
  4. 分页并非页面文件所独有。通常,所有硬分页中只有约 10% 涉及页面文件。任务管理器中甚至没有提示这一点。

相关内容