Chrome DevTools 中用于追踪循环渲染中高频临时对象的核心工具是 Memory 面板的 “Allocation instrumentation on timeline” 模式,它实时采样内存分配、支持调用栈下钻和小对象过滤,比 Heap Snapshot 更适合定位瞬时对象分配热点。
Chrome DevTools 并没有名为“内存分配仪表盘”的独立面板,你实际想用的是 Memory 面板中的 “Allocation instrumentation on timeline”(内存分配时间线)模式——这是专门用于追踪循环渲染中高频创建的临时小对象(如短生命周期的 VNode、坐标对象、样式计算结果等)的核心工具。
Heap Snapshot 适合查“谁还活着”,但对大量瞬时对象(如每帧 new 一个 {x:0,y:1})效果差:它们很快被 GC 回收,快照里几乎看不到。而 Allocation instrumentation on timeline 是实时采样+按时间归档,能精准捕获“在哪一秒、哪个函数、分配了多少个什么类型的小对象”。
以 wangEditor 5 渲染卡顿为例(如输入时每帧反复生成 VNode):
node2Vnode、renderElement)→ 查看右侧 “Object Count” 列,确认是否每秒创建数百个 Object 或 VNode
在 Allocation 时间线中,以下模式高度提示问题:
NODE_TO_INDEX.set(node, index) 每帧执行数百次,WeakMap 写入本身有开销Array 或 Object 分配紧随 renderText 出现:可能文本节点渲染时构造了冗余中间对象改完代码后,用相同操作路径重新录制对比:
Object,集中在 node2Vnode