【js】js垃圾回收是什么?

2021-06-08  本文已影响0人  Adder

长久不用的一些在内存中的变量会被浏览器回收掉,具体的咋回收的呢

GC——垃圾回收

找出不再使用的变量,然后释放掉占用的内存;因此垃圾回收器会定期的执行。

var a = "造火箭";
var b = "拧螺丝";
var a = b;

造火箭这个字符串失去了引用(之前是被a引用),系统检测到之后,就会释放该字符串的储存空间,以回收利用

如何知道,到底哪些内存可回收?

一个循环引用的🌰:

function cycle() {
    var o1 = {};
    var o2 = {};
    o1.a = o2;
    o2.a = o1; 

    return "cycle reference!"
}

cycle();

1.标记清除

标记阶段:从根部开始,逐层往里遍历,遍历到堆中的对象时,说明有被使用,立马打上标记,继续往下遍历直到最深的一层节点
清除阶段:遍历整个堆,回收没有打上标记的对象。

所以现在对于主流浏览器来说,只需要切断需要回收的对象与根部的联系。

2.引用计数 (现代浏览器不常用了)

优点和原理:

劣势:

上一篇下一篇

猜你喜欢

热点阅读