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

在正常使用期间,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(Private Working Set)=工作集的子集,专门描述进程正在使用的、其他进程无法共享的内存量。 提交大小=保留供进程使用的虚拟内存量。

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

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

现在,当我们启动Memory Fox附加模块时,可以看到报告的内存使用量急剧下降。

还要注意,此加载项启动了一个新进程,它处理内存功能。

让Firefox处于空闲状态,并查看工作集和内存值,您可以看到,在需要活动物理内存的Firefox和回收此内存的内存清理插件之间,存在着一场持续不断的斗争。

以下是Firefox处于空闲状态时每隔几秒所报告的内存使用量。

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

上涨一段时间后,你可以看到又一次下降。

起泡。冲洗一下。重复一遍。

此外,如果您除了切换选项卡和上下滚动加载的页面之外什么都不做,您可以看到数字的波动会更剧烈一些,这将在下面进行解释。

解读结果

当你第一次看它的时候,你会想,嘿,这工作得很好。但是看一下Commit Size列,您会发现这个值从未真正更改过。事实上,一旦您启动内存清理附加组件,它就会上升。

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

因此,内存清理器实质上是将活动的物理内存移动到虚拟内存(因为内存被回收必须放到某个地方)。当这种情况发生时,火狐不再有运行所需的内存可用,所以它不得不要求Windows将它需要的各个数据从虚拟内存移回物理内存。

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

整个故事的寓意很简单,内存清除器除了改变数字之外什么也不做。任何操作系统都会知道如何恰当地处理内存,所以就让它们自己做吧。

管理Firefox的内存使用

既然我们已经展示了内存清理附加组件实际上不会做任何有用的事情,那么对于Firefox使用的大量内存,您能做些什么呢?以下是一些建议:

删除不需要的附加组件(特别是清除内存的附加组件)。 将您打开的选项卡数保持在最小。 定期关闭Firefox,然后重新启动。 为您的系统添加更多内存。 不必为那事担心了。

针对Firefox的Memory Fox Next附加组件

相关文章