Firefox 内存清理器真的有效吗?

已发表: 2022-01-29

Firefox 在正常使用期间会消耗相当多的系统内存,这已不是什么秘密。 虽然您打开的选项卡数量和已安装的附加组件肯定有所贡献,但即使是保守使用的开箱即用安装也可能会报告相当多的内存使用情况。

这导致一些 Firefox 附加组件浮出水面,它们声称可以释放浏览器不再需要的内存,但它们真的有效吗?

关于 Windows 如何处理内存的两分钟概述

在我们深入研究内存清理器之前,了解一点 Windows 处理内存的方式很重要。 这很重要,因此我们可以解释我们的实验结果。

不用担心,我们将在非常高的层次上介绍这一点,因此您不必成为超级极客就可以跟随。

作为一个快速的免责声明,这是对 Windows 内存管理基础知识的非常简短的总结。 这绝不应该被认为是权威或权威的,因为它只是解释到适用于本文主题的水平。

广告

Windows 足够聪明,知道未使用的物理内存是浪费的内存,因此它会将所需的所有内容加载到内存中。 但是,只有您的系统实际需要(Windows 和应用程序)并且当前正在使用的内容才会报告为已用物理内存。 其余的(Windows 认为它​​需要的)驻留在所谓的虚拟内存中。

虚拟内存本质上是操作系统不主动需要但随时可以加载到活动内存中的数据。 您可以使用以下公式在任何时候非常粗略地计算系统的虚拟内存量:

虚拟内存 =(总物理内存 - 已用/活动物理内存)+ 最大系统页面文件大小

因此,假设您有一个具有 4 GB 物理内存和 6 GB 最大页面文件的系统。 然后启动 Windows 并打开一些应用程序(Outlook、Firefox 等),Windows 报告正在使用 2.5 GB 的物理内存。 这意味着您有 1.5 GB 的“未使用”物理内存和一个 6 GB 的页面文件,总共有 7.5 GB 的可用虚拟内存。

请记住,操作系统足够聪明,可以知道未使用的物理内存是浪费的内存,因此它将用它预期的你需要的物理内存填充剩余的 1.5 个物理内存,以便几乎可以立即按需访问它。 这可以是任何东西,从最小化的后台程序数据到常见的操作系统功能。

那么当 Windows 用完物理内存来用作虚拟内存时会发生什么? 它将这些数据写入系统页面文件,该文件是您硬盘上的一个巨大(在我们的例子中为 6 GB)文件。 虽然这允许操作系统将几乎所有需要保存在内存中的数据存储在内存中,但在硬盘驱动器中写入和检索(也称为页面错误)这些信息比从物理内存中访问要慢几个数量级。 这就是为什么您拥有的物理内存越多,系统运行的速度就越快。 您的系统使用其页面文件的次数越少,执行速度就越快。

监控 Firefox 的内存使用情况

对于我们的调查,我们将简单地使用 Windows 任务管理器。 我们将跟踪以下列(描述在 Microsoft 的页面上定义):

  • 工作集 = 私有工作集中的内存量加上进程正在使用的可被其他进程共享的内存量。
  • 峰值工作集 = 进程使用的最大工作集内存量。
  • 内存(私有工作集)=工作集的子集,专门描述一个进程正在使用的内存量,不能被其他进程共享。
  • 提交大小 = 保留供进程使用的虚拟内存量。

广告

我们将使用仅加载 Memory Fox 附加组件的 Firefox 4.0.1 的开箱即用安装。 在 Firefox 中,我们将打开以下选项卡,除了向上和向下滚动加载的页面之外不会做任何事情。

在等待所有内容完成加载后,Windows 任务管理器会为 Firefox 报告以下内容。

现在,当我们启动 Memory Fox 插件时,看看报告的内存使用量急剧下降。

另请注意,此附加组件启动了一个新进程,该进程负责处理内存功能。

让 Firefox 闲置并观察 Working Set 和 Memory 值,您可以看到 Firefox 需要活动物理内存和内存清理插件回收此内存之间存在持续的斗争。

这是 Firefox 空闲时每隔几秒报告的内存使用情况。

广告

请注意工作集和内存值的下降。 这是回收系统内存的内存清理器。

上升了一点之后,你可以看到另一个下降。

泡沫。 冲洗。 重复。

此外,如果您只是切换选项卡并上下滚动加载的页面,您会看到数字波动得更加剧烈,这将在下面解释。

解释结果

当你第一次看到它时,你会想,嘿,这很好用。 但是看看 Commit Size 列,你会发现这个值从来没有真正改变过。 实际上,一旦您启动内存清理插件,它就会上升。

请记住,提交大小列报告 Windows 运行相应应用程序所需的实际内存量(物理 + 虚拟)。 因此,在我们的示例中,大约 120 MB 在系统上专门为 Firefox 保留并处于活动状态,并且驻留在未使用的物理内存和/或系统页面文件中。 还要记住,如果需要使用页面文件,则会对性能产生显着影响,因为必须在硬盘上写入和读取虚拟内存,这比物理内存慢得多。

所以本质上,内存清理器正在将活动的物理内存移动到虚拟内存(因为内存被回收必须去某个地方)。 发生这种情况时,Firefox 不再拥有运行所需的内存,因此它必须要求 Windows 将所需的相应数据从虚拟内存移回物理内存。 我们绕了一圈又一圈……

广告

充其量,这个过程根本没有任何用处,最坏的情况是它会导致大量不需要的页面错误,因为再次,如果 Windows 必须使页面文件发挥作用,那么就会对性能造成明显的影响。 在没有太多物理内存的系统上尤其如此(几乎所有虚拟内存都保存在页面文件中),这很讽刺,因为这些系统是内存清理器“设计”的。

整个故事的寓意很简单,记忆清理器除了改变数字外什么都不做。 任何操作系统都会知道如何适当地处理内存,所以让他们做他们的事。

管理 Firefox 的内存使用

既然我们已经证明了内存清理插件并没有真正做任何有用的事情,那么对于 Firefox 使用的大量内存你能做些什么呢? 这里有一些建议:

  • 删除您不需要的附加组件(尤其是任何内存清理的附加组件)。
  • 将您打开的标签数量保持在最低限度。
  • 定期关闭 Firefox 并重新启动它。
  • 为您的系统添加更多内存。
  • 别担心。

Firefox 的 Memory Fox Next 插件