美文网首页js css htmlweb前端
JS垃圾回收机制-引用计数

JS垃圾回收机制-引用计数

作者: 姜治宇 | 来源:发表于2022-04-12 15:39 被阅读0次

    js的垃圾回收,最常使用的方法是引用计数。
    只要有引用堆内存的地方,引用计数就要加1。如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存释放。

    var a = [1,2];
    var b = a;
    a = null;
    console.log(b);
    

    第一行,[1,2]这个数组开辟了一块内存,变量a对其引用了,所以引用计数为1。
    第二行,变量b也引用了这个数组,引用计数为2。
    第三行,a变量回收,引用计数为1。
    第四行,因为引用计数不为0,因此[1,2]未被释放,还可以打印出来。
    但是weakset和weakmap就比较特殊:

    const wm = new WeakMap();
    const element = document.getElementById('example');
    wm.set(element, 'some information');
    element = null;
    

    第二行,变量element指向了dom节点,引用计数为1;
    第三行,weakmap也对dom节点进行了引用,但这个是弱引用,不计入引用计数,因此引用计数还是1;
    最后一行,当变量element回收后,引用计数为0,dom节点也被释放了。

    相关文章

      网友评论

        本文标题:JS垃圾回收机制-引用计数

        本文链接:https://www.haomeiwen.com/subject/hhcnsrtx.html