常见问题

内存膨胀

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

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

内存泄漏

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

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

频繁垃圾回收

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

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


内存分析

Pasted image 20260320160521.png
Pasted image 20260320161100.png

内存占用空间 :操作系统内存,DOM节点就存储在操作系统里。此值增大说明正在创建DOM

javascript内存 :JS堆内存,实际大小表示可访问对象正使用的内存。此值增大说明正在创建对象或对象正在增长

JS查看内存

window.performance.memory
Pasted image 20260320161146.png

Performace monitor监控内存量

Pasted image 20260320161304.png

Performance录制内存变化

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

Pasted image 20260320161336.png

Memory查看内存情况

堆快照 Heap snapshot

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

Pasted image 20260320161429.png

Comparison

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

Pasted image 20260320161455.png

分配时间线 Allocations on timeline

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

Pasted image 20260320161603.png

分配采样 Allocation sampling

按js函数查看分配情况

Pasted image 20260320161625.png

已分离元素 Detached elements

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

Pasted image 20260320161647.png

排查频繁垃圾回收

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