浏览器内存泄漏如何分析与修复指南
浏览器内存泄漏分析与修复指南
一、内存泄漏核心特征
- 内存使用量持续上升,即使页面无操作
- 页面性能逐渐下降,最终崩溃
- 对象脱离预期生命周期,无法被垃圾回收(GC)
二、Chrome DevTools 排查流程
1. 复现问题
- 操作页面典型场景(如路由切换、重复打开/关闭弹窗)
- 使用 Performance Monitor 观察内存变化:
// 强制内存回收(测试用) window.gc(); // 需启动Chrome时添加 --js-flags="--expose-gc"
2. 内存快照分析
- Heap Snapshot 拍摄初始快照
- 重复可疑操作3-5次
- 拍摄第二次快照
- Comparison 模式对比差异
- 关注
Detached DOM trees
(脱离DOM树但未释放) - 检查闭包引用(
Closure
类型对象)
- 关注
3. 时间轴追踪
- Allocation instrumentation timeline:
1. 开始记录 2. 执行可疑操作 3. 停止记录 4. 查看蓝色堆分配块(未回收内存)
三、SPA常见泄漏场景与修复
1. 未清除的定时器
// ❌ 错误示例
mounted() {
this.timer = setInterval(() => {
this.updateData();
}, 1000)