垃圾回收

133 阅读1分钟

什么是垃圾回收

js自动执行并且不可见的一种内存管理机制。我们所创建的函数,对象,变量等都需需要内存。当这些都不再需要的时候,引擎自动将其发现并回收,释放内存。

“标记-清除”法

根:1. 全局变量。2. 本地函数的局部变量和参数。3当前嵌套调用链上的其他函数的变量和参数。

    定期执行以下“垃圾回收”步骤:
    1. 垃圾回收器获取他们的根,并且标记他们
    2. 垃圾回收器标记出所有来自他们的引用
    3. 然后它访问标记的对象并标记它们的引用
    4. 以此类推,直到有未访问的引用(可以从根访问)为止
    5. 最后删除回收未标记的对象

如下图所示:

image.png

总结:一般来说没有被引用的对象就是垃圾,就是要被清除, 有个例外如果几个对象引用形成一个环,互相引用,但根访问不到它们,这几个对象也是垃圾,也要被清除