You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:使用Chrome内存分析器排查Vue应用内存泄漏问题

Vue.js应用内存泄漏排查与Heap快照疑问解析

关于PerformanceMeasure的说明

  • PerformanceMeasure是Chrome内置的性能API对象,用来记录性能指标的时间戳和相关数据。它出现在堆快照里,大概率是你的应用或依赖库调用了performance.mark()或performance.measure(),而且这些实例在标签页关闭时没被正确清理。
  • 你重复打开关闭标签页10次后内存增长,就是因为每次操作都生成了新的PerformanceMeasure,但旧的实例没被释放,累积下来占用了内存。

关于compiled code的说明

  • compiled code是V8引擎把JS代码、Vue模板编译成的字节码/机器码缓存。通常和Vue组件模板编译、动态生成的函数有关。
  • 如果每次打开标签页都重复编译同一模板,而且编译结果没被缓存,或者缓存的引用没被释放,就会导致这部分内存持续增加。Vue默认会缓存编译后的模板,但如果用了动态模板(比如带复杂v-if的模板、未预编译的动态组件),就可能出现重复编译的情况。

下一步排查方向

  • 先查应用代码和第三方库有没有调用performance相关API,然后在Vue组件的beforeUnmount/unmounted钩子里,确认有没有清理这些PerformanceMeasure实例。
  • 打开Snapshot 7和6的Retainers视图,追踪PerformanceMeasure的引用链,看是被应用代码、Vue内部还是第三方库拿着没放。
  • 检查Vue组件的卸载逻辑:全局事件监听、定时器、Vuex/EventBus的订阅,在组件卸载时必须移除;第三方库的实例(比如图表、编辑器)要调用官方提供的销毁方法。
  • 针对compiled code,开启Vue的模板预编译,避免运行时编译;检查动态创建的组件是否被正确销毁,keep-alive的缓存数量有没有合理控制。

内容的提问来源于stack exchange,提问作者pintaf

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 22:32:40