Firefox 内存占用与黑屏卡死问题分析:一次基于about:memory报告的排查

1. 背景

最近在使用 Firefox 时遇到两个明显问题:

  1. Firefox 看起来占用内存较高;
  2. 偶发出现整个系统黑屏、卡死的情况。

为了判断问题到底是 Firefox 内存泄漏、网页占用过高、扩展异常,还是显卡/硬件加速相关问题,我导出了 Firefox 的 about:memory 内存报告,并对其中的进程、内存类型、扩展、GPU/WebRender 使用情况进行了分析。

本文记录这次分析过程、关键数据、结论以及建议的解决方案。


2. 报告基本情况

本次分析的报告来自 Firefox 的内存分析文件:

memory-report.json

报告中包含多个 Firefox 进程:

Main Process
GPU
Socket
RDD
Utility
prealloc
webIsolated=https://cnblogs.com
webIsolated=https://bing.com
webIsolated=https://github.com
privilegedabout
extension

这说明当前 Firefox 采用了典型的多进程架构:

  • 主进程负责浏览器核心逻辑;
  • Web 内容进程负责不同站点页面;
  • Extension 进程负责扩展;
  • GPU 进程负责 WebRender、合成、纹理等图形任务;
  • Socket、RDD、Utility 等为网络、媒体解码、沙箱工具进程。

3. 先区分几个容易误解的内存指标

Firefox 的 about:memory 报告里有很多指标,其中最容易被误解的是 vsizeaddress-spacewasm-guard-pages

3.1 resident

resident 表示进程当前驻留在物理内存中的内存量。

它比任务管理器里的某些统计更接近“实际正在占用 RAM”的概念,但仍可能包含共享页。

3.2 resident-unique

resident-unique 表示该进程独占的物理内存。

这个指标通常更适合判断“这个进程真正额外吃掉了多少内存”。

3.3 explicit

explicit 是 Firefox 自己能够解释和分类的内存。

它通常小于实际 resident,因为不是所有内存都能被 Firefox 精确归因。

3.4 vsize

vsize 是虚拟地址空间大小。

在 64 位系统上,虚拟地址空间可以非常大,报告里出现几 TB 甚至更大的数字并不代表实际占用了对应大小的物理内存。

本次报告中 vsize 数字非常大,但不能将它理解为 Firefox 真正占用了几十 TB 内存。

3.5 wasm-guard-pages

本次报告中出现:

wasm-guard-pages: 4125.19 MB

这个数字看起来很吓人,但它主要是 WebAssembly 运行时保留的 guard pages,属于虚拟地址空间保护机制,不等于实际吃掉 4GB 物理内存。

因此,这不是本次问题的核心。


4. 总体内存占用情况

从报告汇总来看:

指标 数值
resident 总量 约 1865 MB
resident-unique 总量 约 1213 MB
private 总量 约 1555 MB
explicit 总量 约 692 MB
heap-allocated 约 474 MB
JS runtime 约 465 MB
window-objects 约 31 MB
GPU committed 约 249 MB
GFX/WebRender 约 239 MB
wasm-guard-pages 约 4125 MB,主要是虚拟地址保留

从这些数据看,Firefox 当前真实物理内存占用大约在 1.2GB 到 1.9GB 之间。

这个占用不能说特别低,但对于现代 Firefox、多个标签页、多个扩展同时运行的场景,并不属于明显异常的内存爆炸。

换句话说:

这份报告并不支持“Firefox 发生了严重内存泄漏并直接把系统内存吃光”的判断。


5. 各进程内存占用分析

resident-unique 排序,各进程大致如下:

进程 resident resident-unique explicit heap JS runtime
Main Process 466.82 MB 297.04 MB 166.87 MB 163.07 MB 55.68 MB
GitHub 内容进程 273.09 MB 206.58 MB 139.99 MB 95.49 MB 114.14 MB
Extension 扩展进程 245.29 MB 185.04 MB 137.99 MB 71.67 MB 112.58 MB
Bing 内容进程 249.73 MB 182.21 MB 115.21 MB 53.84 MB 100.81 MB
GPU 进程 181.59 MB 137.31 MB 12.05 MB 17.42 MB 0 MB
cnblogs 内容进程 183.57 MB 115.84 MB 72.97 MB 38.59 MB 58.05 MB
privilegedabout 110.03 MB 51.09 MB 32.54 MB 21.07 MB 19.24 MB

可以看到,主要内存来自以下几类:

  1. 浏览器主进程;
  2. GitHub、Bing、cnblogs 等网页内容进程;
  3. 扩展进程;
  4. GPU 进程。

其中 GitHub 和 Bing 的 JS runtime 都超过 100MB,说明这些页面本身的 JavaScript 状态较重,但仍处在常见范围内。


6. 扩展内存分析

报告中识别到的扩展包括:

扩展 说明
Bitwarden Password Manager 密码管理器
Wappalyzer 技术栈识别工具
easyScholar 学术相关扩展
Zotero Connector Zotero 浏览器连接器
欧路翻译 划词/网页翻译工具
恢复关闭的标签页 标签页恢复工具
Wallabagger 稍后读/网页保存相关工具
IPvFoo 网络/IP 信息显示
其他 Mozilla 内置扩展 Picture-in-Picture、Form Autofill 等

扩展进程中的路径累计内存大致如下:

扩展 路径累计内存
Bitwarden Password Manager 约 42.58 MB
Wappalyzer 约 20.69 MB
Zotero Connector 约 5.07 MB
欧路翻译 约 3.93 MB
恢复关闭的标签页 约 3.02 MB

内容脚本中也看到:

内容脚本 估算内存
easyScholar 约 18.12 MB
Bitwarden Password Manager 约 7.15 MB

需要注意:扩展路径累计内存可能存在重复统计,不能简单相加当作真实总量。不过它可以帮助定位哪些扩展更活跃。

从数据看,Bitwarden、Wappalyzer、easyScholar 相对更显眼,但它们并没有表现出单个扩展吃掉数百 MB 或数 GB 内存的异常。

结论是:

扩展有一定内存消耗,但暂时不像本次黑屏卡死的首要原因。

不过,如果要做排查,可以优先临时禁用这些扩展进行验证:

  1. Wappalyzer;
  2. easyScholar;
  3. 欧路翻译;
  4. Zotero Connector;
  5. Bitwarden。

Bitwarden 涉及 WebAssembly 相关内存,但本次报告中实际物理占用并不异常。


7. GPU/WebRender 分析

本次报告中最值得关注的是 GPU 相关指标。

GPU 进程关键数据如下:

项目 数值
GPU 进程 resident 181.59 MB
GPU 进程 resident-unique 137.31 MB
gpu-committed 249.19 MB
gpu-shared 146.65 MB
gpu-dedicated 142.64 MB
gfx/webrender 总量 约 238.75 MB

WebRender 纹理细分:

项目 数值
render-targets 84.88 MB
texture-cache/atlas 39.50 MB
depth-targets 35.50 MB
picture-tiles 32.00 MB
swap-chains 29.23 MB
upload-staging-textures 6.25 MB
render-texture-hosts 5.21 MB

这些数据说明 Firefox 正在较明显地使用 GPU 硬件加速和 WebRender。

如果只是普通内存高,通常表现为系统变慢、开始换页、程序响应迟钝;但如果表现是:

  • 整个系统突然黑屏;
  • 鼠标键盘无响应;
  • 屏幕短暂黑一下再恢复;
  • 或需要强制重启;

这更像是 GPU 驱动、硬件加速、显存/共享显存、WebRender 或驱动 TDR 相关问题。

Windows 上这类问题常见于:

  1. 显卡驱动崩溃或超时恢复;
  2. Firefox WebRender 与当前驱动组合不稳定;
  3. 硬件加速触发某些页面或扩展的图形路径问题;
  4. 独显/集显切换异常;
  5. 显存压力、驱动 bug 或系统图形栈问题。

因此,本次报告更支持下面这个判断:

Firefox 内存占用并没有严重异常;系统黑屏和卡死更可能与 GPU 硬件加速、WebRender 或显卡驱动有关。


8. 为什么不是单纯内存泄漏?

判断是否为内存泄漏,需要看是否存在某个进程或模块持续异常增长,并且达到远超正常范围的水平。

本次报告中:

  • Firefox 独占物理内存约 1.2GB;
  • 总 resident 约 1.9GB;
  • 单个网页进程没有达到数 GB;
  • 扩展进程约 245MB resident;
  • GPU 进程约 181MB resident;
  • 网络缓存只有约 7.6MB;
  • 图像缓存本身也没有表现出异常爆炸。

这些数字更像是“多个现代网页 + 多个扩展 + GPU 加速”的正常偏高状态,而不是严重泄漏。

同时,黑屏卡死这种症状比普通内存压力更偏向图形栈问题。


9. 解决方案一:关闭 Firefox 硬件加速

这是最优先建议尝试的方案。

操作步骤:

  1. 打开 Firefox 右上角三横线菜单;
  2. 进入“设置”;
  3. 选择“常规”;
  4. 下拉到“性能”;
  5. 取消勾选“使用推荐的性能设置”;
  6. 取消勾选“使用硬件加速模式,如果可用”;
  7. 重启 Firefox。

如果关闭硬件加速后黑屏和卡死明显消失,那么基本可以判断问题来自 GPU/驱动/WebRender 路线。

关闭硬件加速的代价是:

  • 视频播放、页面滚动、复杂图形页面可能略微增加 CPU 占用;
  • 某些动画或高分辨率页面可能没那么流畅;
  • 但稳定性通常会提高。

对于频繁黑屏卡死的场景,稳定性优先级通常高于这一点性能损失。


10. 解决方案二:调整内容进程数量

Firefox 的多进程架构可以提升隔离性和稳定性,但也会增加内存占用。

如果标签页较多,可以降低内容进程数量来减少内存峰值。

10.1 图形界面设置

路径:

设置 → 常规 → 性能

先取消:

使用推荐的性能设置

然后查看是否出现:

内容进程限制

可以设置为:

效果
8 默认或偏高,多标签性能好,内存占用高
4 推荐折中值
2 更省内存,适合内存压力明显的机器
1 最省内存,但多标签性能明显下降

建议先设为 4。

10.2 如果界面里看不到“内容进程限制”

新版 Firefox 或某些配置下可能隐藏该选项,可以通过 about:config 修改。

步骤:

  1. 地址栏输入:
about:config
  1. 搜索:
dom.ipc.processCount
  1. 修改值:
4
  1. 重启 Firefox。

如果仍然觉得内存压力较高,可以再尝试设为:

2

不建议一开始就设为 1,因为会明显影响多标签并发性能。


11. 解决方案三:逐个禁用扩展排查

虽然本次报告不支持“扩展严重泄漏”的判断,但扩展仍然可能触发页面卡顿、内容脚本膨胀、GPU 路径异常或兼容性问题。

建议用二分法排查:

  1. 先禁用非必要扩展;
  2. 使用一段时间观察是否还会黑屏;
  3. 如果稳定,再逐个启用扩展;
  4. 找到触发问题的扩展组合。

优先排查这些扩展:

  1. Wappalyzer;
  2. easyScholar;
  3. 欧路翻译;
  4. Zotero Connector;
  5. Bitwarden。

其中 Wappalyzer、easyScholar、翻译类扩展都会在网页中注入内容脚本,理论上更容易与复杂网页产生交互。

Bitwarden 虽然内存相对更高,但它是密码管理器,是否禁用需要结合使用需求。如果要测试,建议只做短时间排查。


12. 解决方案四:检查显卡驱动和 Windows 事件日志

如果 Firefox 关闭硬件加速后问题消失,下一步应该检查显卡驱动。

12.1 检查 Windows 事件查看器

打开:

事件查看器 → Windows 日志 → 系统

重点搜索这些关键词:

Display
nvlddmkm
amdkmdag
igdkmdn64
igfx
LiveKernelEvent
TDR

如果看到类似:

Display driver stopped responding and has recovered

或者 NVIDIA/AMD/Intel 驱动相关错误,就说明黑屏很可能是显卡驱动超时或崩溃。

12.2 更新或回退显卡驱动

如果最近更新过驱动后才开始出现问题,可以尝试回退到稳定版本。

如果驱动很久没更新,可以尝试更新到显卡厂商官网版本。

对于笔记本或移动工作站,建议优先使用设备厂商提供的稳定驱动,其次再考虑 NVIDIA/AMD/Intel 官网驱动。

12.3 固定 Firefox 使用集显或独显

如果机器有集显和独显,可以在 Windows 图形设置中指定 Firefox 使用某一个 GPU。

路径大致为:

Windows 设置 → 系统 → 显示 → 图形

添加 Firefox 后,分别测试:

  • 节能模式,即集显;
  • 高性能模式,即独显。

如果某一种模式明显稳定,就可以固定使用。


13. 解决方案五:继续采集对比报告

单份 about:memory 报告只能说明某一时刻的状态。

如果要判断是否存在持续增长的泄漏,建议采集多份报告:

  1. Firefox 刚启动后采集一份;
  2. 正常使用 1 小时后采集一份;
  3. 出现明显卡顿前采集一份;
  4. 黑屏恢复后如果还能操作,再采集一份。

然后对比:

  • 哪个进程增长最快;
  • JS runtime 是否持续增长;
  • extension 进程是否持续增长;
  • GPU committed 是否持续增长;
  • 某个标签页是否持续增长。

如果是内存泄漏,通常会看到某个进程或某类对象持续单调增长,且关闭对应标签页或扩展后不能释放。


14. 推荐排查顺序

综合本次报告,建议按下面顺序操作:

第一步:关闭硬件加速

这是最关键的一步。

设置 → 常规 → 性能 → 取消“使用推荐的性能设置” → 取消“使用硬件加速模式,如果可用”

重启 Firefox 后观察是否还会黑屏。

第二步:将内容进程限制设为 4

如果界面里没有该选项,就在 about:config 修改:

dom.ipc.processCount = 4

第三步:禁用高活跃扩展测试

优先测试:

Wappalyzer
easyScholar
欧路翻译
Zotero Connector
Bitwarden

第四步:检查显卡驱动和系统日志

重点看 Windows 事件查看器中是否有显卡驱动重置、TDR、LiveKernelEvent 等记录。

第五步:多次采集 about:memory 报告对比

如果关闭硬件加速后仍然出现问题,再继续判断是否有特定网页或扩展在持续泄漏。


15. 最终结论

根据本次 about:memory 报告,Firefox 的物理内存占用约为 1.2GB 到 1.9GB。

这个数字偏高,但不构成严重异常,也没有看到某个网页或扩展单独吃掉数 GB 内存的证据。

真正值得关注的是 GPU/WebRender 相关资源:

gpu-committed: 约 249 MB
gfx/webrender: 约 239 MB

再结合“整个系统黑屏、卡死”这一现象,最可能的方向不是普通内存泄漏,而是:

Firefox 硬件加速 / WebRender / 显卡驱动 / GPU 调度之间存在兼容性或稳定性问题。

因此,最推荐的解决方案是:

  1. 关闭 Firefox 硬件加速;
  2. 将内容进程限制设为 4;
  3. 逐个禁用 Wappalyzer、easyScholar、翻译类扩展、Zotero Connector 等扩展测试;
  4. 检查 Windows 事件查看器中的显卡驱动错误;
  5. 必要时更新或回退显卡驱动。

如果关闭硬件加速后黑屏问题消失,基本就可以确认问题主要在 GPU/驱动/WebRender 路径,而不是 Firefox 单纯内存占用过高。


Firefox 内存占用与黑屏卡死问题分析:一次基于about:memory报告的排查

https://blog.ckh-cn.site/index.php/2026/05/18/229.html

作者

CKH

发布时间

2026-05-18

许可协议

CC BY 4.0

OS: Linux 115a654af43f 5.15.0-113-generic #123-Ubuntu SMP Mon Jun 10 08:16:17 UTC 2024 x86_64
CPU Info:
Memory Info:
评论