引用计数法

  • 跟踪记录对象的引用次数,当次数为0时就需要被销毁。
    • 缺点:当对象中存在循环引用时,该对象无法被回收,造成内存泄漏

标记-清除法

  • 解决循环引用的问题,但是会出现内存碎片。
    • 解决策略:first-fit、best-fit、worst-fit
  • 标记阶段
    • 从根出发,遍历所有可达的对象并将其标记上活动对象。
  • 清除阶段
    • 清除所有未被标记的对象

Weakmap 和 Map

  • Weakmap,键值对集合,键是弱引用,只能是对象,值没有限制。Map没有限制。
  • Weakmap,键是弱引用,不会阻止与之关联的对象被垃圾回收。Map键是强引用,会阻止。
  • Weakmap的 key 无法使用forEach()keys()遍历。

使用场景

  • 引用 DOM 元素,
  • 对象的缓存