js垃圾回收机制.png

具体策略

引用计数法(早期浏览器)

  • 这是很初级的策略,指的是如果一个对象没有被引用了则就会被垃圾回收机制回收
  • 概念:该算法将“对象是否不再需要”定义为“对象有没有其他对象引用到它”
  • 缺陷:无法解决循环引用(指的是A对象的属性C指向A,B对象的D属性指向A)带来的问题

标记清除法(现代浏览器)

  • 从2012年开始,主流浏览器都使用标记清除法去回收内存
  • 概念:这个算法把“对象是否不再需要”简化定义为“对象是否可以获得”。
  • 标机回收法指的是,垃圾回收期会从根对象(相当于js的全局对象)自上而下寻找没有被引用到的对象,然后清除掉没有被引用的对象
  • 回收步骤

    1. 标记阶段:垃圾回收器会从根对象开始遍历。每一个可以从根对象访问到的对象都会被添加一个标识,于是这个对象就被标识为可到达对象。
    2. 清除阶段:垃圾回收器会对堆内存从头到尾进行线性遍历,如果发现有对象没有被标识为可到达对象,那么就将此对象占用的内存回收,并且将原来标记为可到达对象的标识清除,以便进行下一次垃圾回收操作。
Last modification:March 10, 2021
If you think my article is useful to you, please feel free to appreciate