美文网首页
js垃圾回收机制

js垃圾回收机制

作者: 冇得感情 | 来源:发表于2020-01-13 11:53 被阅读0次

    实现方式:

    1.标记清除

    当变量进入环境时标记为 进入环境,离开环境时标记为 离开环境。正在被使用的变量不能回收也就是被标记为进入环境的产量。标记为 离开环境的变量可被回收。

    function fn(){

    //函数执行 a  b被标记为进入环境

          let a = 10;

          let b = 10;

    }

    fn();// 函数执行结束,ab被标记为离开环境,被回收。

    2.引用计数

    统计引用变量申明后被引用的次数,当次数为0时,变量被回收。

    function fn2(){

        let c = {};

        let d = c;// c被d引用 c的计数为1

        let e = c;// c被e引用 c的计数为2

        d = null;// d不再引用c c的计数减为1

        e = {};// e不再引用c c的计数减为0 将被回收

    }

    注意:循环引用需要手动清除

    function fn2(){

          let a = {};

          let b = {};

          a.grop = b;

          b.group = a;

          //a 和 b的互相引用,导致计数不能为0。

    }

    fn2();

    a.grop = null; b.group = null;

    手动设置。

    内存泄露:

    1.全局变量照成内存泄露。

    2.未销毁的定时器和回调函数。

    3.闭包

    4.DOM引用

    相关文章

      网友评论

          本文标题:js垃圾回收机制

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