垃圾回收机制

一、是什么

JS 自动管理内存,释放无用对象。

二、为什么

避免:

  • 内存泄漏
  • 手动管理复杂

三、核心算法

1. 引用计数(已淘汰)

对象被引用次数为 0 → 回收

问题:

  • 循环引用无法释放

2. 标记清除(主流)

流程:

  1. 标记可达对象
  2. 清除不可达对象

3. V8优化

  • 分代回收(新生代 / 老生代)
  • Scavenge
  • Mark-Sweep

四、内存泄漏场景

  • 全局变量
  • 闭包
  • 定时器未清理
  • DOM引用未释放

五、总结

  • JS 采用标记清除
  • 注意避免内存泄漏