跳到主要内容

gc

V8 内存与垃圾回收(概览)

ToC

  • 新生代/老生代与分配
  • GC 算法与写屏障
  • 隐藏类与内联缓存(IC)
  • 性能建议

新生代/老生代

  • 新生代(Scavenge, Cheney 复制):对象短命,使用 From/To 空间复制回收;
  • 老生代(标记-清除/标记-整理/并发增量):长寿命对象;
  • 大对象空间单独管理;TLAB/局部分配提升吞吐。

GC 算法与写屏障

  • 并发/增量式标记降低 STW;
  • 写屏障维护跨代引用,确保增量与并发阶段的正确性。

隐藏类与 IC

  • V8 通过隐藏类(Hidden Class)与内联缓存加速属性访问;
  • 对象形状稳定(相同属性添加顺序)利于优化;热函数可被 TurboFan 编译优化。

性能建议

  • 避免在热路径上创建形状不稳定对象;
  • 复用数组/对象、避免过度稀疏数组;
  • 关注内存泄漏来源:全局引用、闭包、缓存未清理、事件监听未移除。