vue 3 渲染性能与内存泄漏本质一体:组件未真正卸载导致内存持续堆积。需在开发阶段通过 chrome devtools memory 面板抓取“detached dom”和“vuecomponent”增长,重点排查未清理的全局事件监听、定时器/异步回调、第三方库实例,以及插槽内联函数引发的闭包引用。

Vue 3 组件渲染性能分析和内存泄漏隐患排查不是两件事,而是一体的——很多“卡顿”“变慢”表象背后,其实是组件没真正卸载,内存持续堆积。关键不在于等它崩了再查,而是在开发阶段就识别出那些“看似正常、实则滞留”的资源引用。
看 DevTools 的 Memory 面板,抓“已分离的 DOM”和“重复组件实例”
这是最直接有效的入口。打开 Chrome DevTools → Memory 面板 → 选 Heap snapshot → 点击 “Take snapshot”。操作一次页面跳转(比如进入/退出某个列表页),再拍一张快照,用“Comparison”模式对比:
- 搜索关键词 VueComponent 或 Proxy,看数量是否随跳转持续增长
- 展开 Detached DOM trees,点开查看里面是否包含你刚离开的组件的 DOM 节点(如 el-table、el-tree 的子节点)
- 筛选 system / context 类型对象,若大量存在且保留着 ref、computed 或事件回调,大概率是闭包未释放
重点盯住这三类“手动借来的资源”
Vue 自动清理响应式数据和内部 effect,但不会管你主动绑定的外部东西。以下代码模式几乎必然导致泄漏:

