JS垃圾回收机制

171 阅读1分钟

JS垃圾回收机制

前言

个人拙见,前端其实是不太好回答这个问题的,因为垃圾回收是浏览器帮前端做的,所以这就涉及到了C++。那么C++关我前端什么事?但是别人面试官问你,你还是得回答的呀!故写此文章记录。

正文

什么是垃圾?

  1. 没有被引用的对象就是垃圾。
  2. 如果有多个对象互相引用,形成一个环,但是外部访问不到,它们也是垃圾。

如何捡垃圾?

标记-清除算法。

  1. 标记阶段:从根集合出发,将所有活动对象及其子对象打上标记
  2. 清除阶段:遍历堆,将非活动对象(未打上标记)的连接到空闲链表上

引用-计数算法。

每次新建对象、赋值引用和删除引用的同时更新计数器,如果计数器值为0则直接回收内存。

更多算法点击这里。

深入的研究。

参考文章

参考的英文文章。