0
点赞
收藏
分享

微信扫一扫

内存溢出与内存泄露

白衣蓝剑冰魄 2022-04-29 阅读 97
javascript

文章目录

内存溢出与内存泄露

内存溢出

  • 是一种程序运行出现的错误
  • 当程序运行需要的内存超过了剩余的内存时,就出抛出内存溢出的错误
    eg:
        var obj={}
        for (var i = 0; i < 10000; i++) {
           obj[i]=new Array(10000000)
        }

运行结果
在这里插入图片描述
查看此过程内存
在这里插入图片描述

内存泄露

  • 内存泄露就是:占用的内存没有及时释放
  • 内存泄露积累多了就容易导致内存溢出
  • 常见的内存泄露:
    意外的全局变量
    没有及时清理的计时器或回调函数
    闭包
    eg:
        // 意外的全局变量
        function fn (){
          // 没有使用var定义,此时a是全局变量
           a =3
           console.log(a)
        }

        //循环定时器 
        // 启动循环定时器后不清理,就会不断申请空间
        setInterval(function(){
            console.log('-----')
        },1000)

        // 闭包
        function fn1 (){
           var a =4
           function fn2(){
               console.log(++a)   
           }
           return fn2
        }
        f = fn1()
        f()

解决:

        // 意外的全局变量
        function fn (){
          // 没有使用var定义,此时a是全局变量
           var a =3
           console.log(a)
        }

        //循环定时器 
        // 启动循环定时器后不清理,就会不断申请空间
        var interval= setInterval(function(){
            console.log('-----')
        },1000)
        clearInterval(interval)

        // 闭包
        function fn1 (){
           var a =4
           function fn2(){
               console.log(++a)   
           }
           return fn2
        }
        f = fn1()
        f()
        f=null
举报

相关推荐

0 条评论