在 Memory 面板中捕获堆快照需先切换到 Heap Snapshot 模式,点击 Capture heap snapshot 按钮;建议先手动触发 GC 再捕获以提升准确性;多次捕获后通过 Comparison 模式差分分析定位内存泄漏。

在 Chrome DevTools 的 Memory 面板中抓取堆快照,核心是触发一次当前 JavaScript 堆内存的完整快照捕获,用于后续分析内存占用、对象引用关系和潜在泄漏。
打开 Memory 面板并选择 Heap Snapshot
确保 Chrome 版本较新(建议 v90+),打开 DevTools(F12 或 Cmd/Ctrl+Shift+I),切换到 Memory 标签页。在左上角的捕获类型中,选择 Heap Snapshot(不是 Allocation instrumentation on timeline 或 Allocation sampling)。
点击 “Capture heap snapshot” 按钮
页面处于目标状态(比如执行完某段操作、完成异步加载、复现疑似泄漏场景后),直接点击面板中央的 Capture heap snapshot 按钮(图标为相机?)。DevTools 会暂停 JS 执行一小会儿,扫描整个堆,生成快照。完成后会在左侧列表中显示类似 Snapshot 1 的条目,并标注大小和捕获时间。
建议配合“清理内存”再捕获(提升准确性)
为减少干扰,捕获前可手动触发垃圾回收:
- 先点击右上角的 trash can(垃圾桶)图标 强制 GC
- 或在 Console 中运行 window.gc()(需在 chrome://flags/#enable-mock-gc 启用 mock GC,仅开发环境有效;生产环境不可用)
- 再点击 Capture,得到更“干净”的快照,利于识别真实留存对象
多次捕获对比定位泄漏
单个快照只能看静态结构,要查泄漏需做差分分析:
- 在初始空闲状态捕获 Snapshot 1
- 执行可疑操作(如打开又关闭模态框、重复路由跳转等)
- 再次 GC + 捕获 Snapshot 2
- 在 Snapshot 2 下拉菜单中选 Summary → Comparison,将对比基准设为 Snapshot 1
- 筛选 Objects allocated between snapshots,重点关注 Constructor 列中数量/大小明显增长且未释放的类名(如 MyComponent、Closure、Array)


















