gc
V8 内存与垃圾回收(概览)
ToC
- 新生代/老生代与分配
- GC 算法与写屏障
- 隐藏类与内联缓存(IC)
- 性能建议
新生代/老生代
- 新生代(Scavenge, Cheney 复制):对象短命,使用 From/To 空间复制回收;
- 老生代(标记-清除/标记-整理/并发增量):长寿命对象;
- 大对象空间单独管理;TLAB/局部分配提升吞吐。
GC 算法与写屏障
- 并发/增量式标记降低 STW;
- 写屏障维护跨代引用,确保增量与并发阶段的正确性。
隐藏类与 IC
- V8 通过隐藏类(Hidden Class)与内联缓存加速属性访问;
- 对象形状稳定(相同属性添加顺序)利于优化;热函数可被 TurboFan 编译优化。
性能建议
- 避免在热路径上创建形状不稳定对象;
- 复用数组/对象、避免过度稀疏数组;
- 关注内存泄漏来源:全局引用、闭包、缓存未清理、事件监听未移除。