VSCode本身不直接输出性能检测数据,所有数据均来自外部工具:Process Explorer显示进程级资源占用(MB/%),无时间维度;Performance面板的.json文件源自Chromium采样,需关注Self Time和Category;Heap Snapshot的retained size才是内存泄漏关键指标,须对比快照delta值。

VSCode 本身不直接输出“性能检测数据”,你看到的几乎全是外部工具生成、再由 VSCode 加载或展示的结果。关键不是“怎么看”,而是“先确认数据来源”——不同来源的数据结构、单位、上下文完全不同,混着看会误判。
Developer: Open Process Explorer 显示的内存/CPU 数值
这是最常被当作“性能数据”的界面,但它只反映进程级资源占用,和代码逻辑无关。
-
Extension Host内存持续上涨?大概率是某个扩展在缓存未清理、事件监听器没解绑,或反复创建大对象(比如 DOM 节点、大型数组) -
Main进程 CPU 高?优先检查是否在执行大规模搜索(Ctrl+Shift+F)、正则替换,或有扩展在主线程做同步计算 - 数值单位是 MB / %,但没有时间维度——单次快照无意义,需连续观察趋势;突然跳变比稳定高更值得警惕
Performance 面板录制的 .json profile 文件
这是真正能定位代码瓶颈的数据,来自 Chromium 的底层采样,但必须手动触发并理解调用栈含义。
- 重点关注
Self Time列:数值高的函数才是真热点,别只盯着总耗时长的父函数 - 留意
Category标签:如果是Scripting占比高,说明 JS 执行慢;Rendering高,可能是样式重排或大量 DOM 操作 - 常见陷阱:
vscode-textmate的语法高亮耗时会出现在Worker线程里,但 profile 默认只录主线程——得在开发者工具里手动选中 Worker 进程再录制
Memory 面板堆快照(Heap Snapshot)里的 retained size
内存泄漏分析的核心依据,但很多人只看 Size 忽略了 Retained Size。
-
Retained Size表示“如果删掉这个对象,能释放多少内存”,这才是泄漏影响的真实量级 - 筛选
Detached DOM tree节点:表示已从文档移除但仍有 JS 引用,典型泄漏模式 - 对比两个快照时,右键某构造函数 →
Reveal in Summary view,看 delta 值是否持续增长
真正容易被忽略的,是数据的时间上下文和作用域边界——Process Explorer 看的是整个编辑器生命周期,Performance 录制的是某次操作窗口,Heap Snapshot 捕获的是某一毫秒的瞬时状态。拿错时间粒度的数据去推断长期问题,就像用体温计测天气。











