常见问题

内存膨胀

现象:内存使用过多,表现为网页性能一直很糟糕

排查:内存上限的衡量受限于设备性能,需要收集用户喜欢使用的设备机型,在目标机型上进行网页体验测试,如体验不佳则存在内存使用过多

内存泄漏

现象:网页性能随着使用时间越来越差

排查:查看 JS 堆内存使用,关注垃圾回收节点,JS 内存持续增长或 DOM 不符合预期的持续增长,则存在内存泄漏

频繁垃圾回收

现象:网页出现延时或经常暂停。垃圾回收期间所有脚本都会暂停

排查:观测到内存使用的频繁上升下降则存在频繁垃圾回收

内存分析

Chrome 任务管理器查内存量

Chrome-更多工具-任务管理器

Pasted image 20260407114036.png

如果没有 JavaScript 内存需要右击开启

Pasted image 20260407114045.png

JS 查看内存

window.performance.memory

Pasted image 20260407114058.png

Performace monitor 监控内存量

Pasted image 20260407114110.png

Performance 录制内存变化

勾选 Memory 后开始录制,点按“扫把图标”强制垃圾回收,可测试内存泄漏等问题

Pasted image 20260407114122.png

Memory 查看内存情况

堆快照 Heap snapshot

当前内存使用情况快照,可以筛选“Detached”已分离 DOM 节点(JS 引用导致无法回收的 DOM 节点)造成的内存泄漏,排查选中的节点被什么位置的什么变量引用

Pasted image 20260407114133.png

Comparison

两个快照之间可以使用 comparison 视图比对变化

Pasted image 20260407114144.png

分配时间线 Allocations on timeline

录制新内存分配情况,关注分配时间段的内存具体数据,查找对象被分配到的位置

Pasted image 20260407114154.png

分配采样 Allocation sampling

按 JS 函数查看分配情况

Pasted image 20260407114202.png

已分离元素 Detached elements

查看确切的已分离 DOM 节点和数量

Pasted image 20260407114211.png

排查频繁垃圾回收

任务管理器和 Performance 如果观测到频繁的内存上升下降,则是频繁垃圾回收