基于 Nicholas Nethercote(Firefox 开发者)最初发布的博客文章 此处。
tl;dr
Firefox 7 现在使用的内存比以前版本少得多:通常减少 20% 到 30%,有时甚至减少 50%。这意味着 Firefox 和您使用的网站将更加快速、响应更灵敏,并且暂停次数更少。这也意味着 Firefox 发生崩溃或因内存不足而中止的可能性降低了。
如果您执行以下任何操作,这些优势将更加明显
– 长时间保持 Firefox 处于打开状态;
– 同时打开多个标签页,特别是包含大量图像的标签页;
– 查看包含大量文本的网页;
– 在 Windows 上使用 Firefox
– 同时使用 Firefox 和其他使用大量内存的程序。
背景
Mozilla 工程师启动了一项名为 MemShrink 的工作,其目标是通过减少内存使用量来提高 Firefox 的速度和稳定性。已经取得了很大的 进展,并且由于 Firefox 的 更快的开发周期,每个改进都将在短短 12-18 周内发布到最终版本中。Firefox 的最新更新是第一个从 MemShrink 成果中受益的通用版本,其优势显著。
量化改进
测量内存使用量很困难:没有标准的基准测试,您可以使用多种不同的指标,并且内存使用量会根据浏览器的操作而发生巨大变化。通常只打开少数几个标签页的用户与通常打开数百个标签页的用户会有完全不同的体验。(顺便说一句,后一种情况并不少见,尽管许多人对任何人打开这么多标签页的想法感到惊讶和难以置信。例如,请参阅 此处 和 此处 的评论线程。)
耐力测试
Dave Hunt 和其他人一直在使用 MozMill 加载项执行“耐力测试”,他们打开和关闭大量网站并详细跟踪内存使用情况。Dave 最近对 Firefox 的开发版本进行了 耐力测试对比,在 30 个标签页中反复打开和关闭来自 100 个广泛使用的网站的页面。
[[以下数字是在 Firefox 最新版本处于 Beta 阶段时运行的,并捕获了每个浏览器版本在测试运行五次期间的平均和峰值“驻留”内存使用情况。“驻留”内存使用量是指 Firefox 正在使用的物理 RAM 量,因此可以说是衡量正在使用的实际机器资源的最佳指标。]]
测量结果在每次运行之间差异很大。如果我们对运行进行配对比较,我们会看到内存使用量的以下相对减少
最小驻留内存:1.1% — 23.5%(中位数 6.6%)
最大驻留内存:-3.5% — 17.9%(中位数 9.6%)
平均驻留内存:4.4% — 27.3%(中位数 20.0%)
以下两张图表显示了每个版本的 Run 1 期间内存使用量如何随时间变化。Firefox 6 的图表在前,最新版本在后。(注意:仅比较紫色的“驻留”线;绿色“显式”线的含义在版本之间发生了变化,因此这两条绿色线无法进行合理的比较。)
Firefox 7 显然要好得多;它的图表更低,并且变化更小。
MemBench
Gregor Wagner 有一个名为 MemBench 的内存压力测试。它依次打开 150 个网站,每个网站一个标签页,每个网站之间间隔 1.5 秒。这些网站主要来自 Alexa 的热门网站 列表。我在我的 Ubuntu Linux 机器上对 Firefox 6 和 7 的 64 位版本运行了此测试,该机器有 16GB 的 RAM。每次,我都让压力测试完成,然后打开 about:memory 以获取峰值驻留使用量的测量结果。然后,我多次点击 about:memory 中的“最小化内存使用量”按钮,直到数字再次稳定,然后重新测量驻留使用量。(点击此按钮不是普通用户所做的操作,但它对于测试很有用,因为它会导致 Firefox 立即释放将在垃圾回收运行时最终释放的内存。)
对于 Firefox 6,峰值驻留使用量为 2,028 MB,最终驻留使用量为 669 MB。对于 Firefox 7,峰值使用量为 1,851 MB(减少了 8.7%),最终使用量为 321 MB(减少了 52.0%)。后一个数字清楚地表明,碎片 在 Firefox 7 中是一个小得多的问题。
(相关的是,Gregor 最近在 MemBench 上 测量 了 Firefox 和 Google Chrome 的尖端开发版本。)
结论
显然,这些测试是合成的,并不完全匹配用户实际使用 Firefox 的方式。(改进基准测试是我们作为 MemShrink 工作的一部分正在进行的一项工作,但我们还有很长的路要走。)尽管如此,基本操作(在标签页中打开和关闭网页)是一样的,我们预计实际使用中的改进将反映测试中的改进。
这意味着用户应该会看到 Firefox 7 使用的内存少于早期版本——通常减少 20% 到 30%,有时甚至减少 50%——尽管改进将取决于确切的工作负载。事实上,我们收到了很多早期用户的反馈,他们表示最新的 Firefox 更新感觉更快、响应更灵敏、暂停次数更少,并且总体上比以前的版本更令人愉悦。
Mozilla 的 MemShrink 工作仍在继续。上面的耐力测试结果表明,Firefox 的 Beta 版本已经具有更好的内存使用情况,并且我相信随着时间的推移,我们将继续取得进一步的改进。
40 条评论