内存溢出与内存泄漏

内存溢出和内存泄漏

内存溢出:

  • 一种程序运行出现的错误
  • 当程序运行需要的内存超过了剩余的内存时,就会抛出内存溢出的错误

内存泄漏

  • 占用的内存没有及时释放
  • 内存泄漏积累多了就容易导致内存溢出

常见的内存泄漏:

  • 意外的全局变量
  • 没有及时清理的计时器或回调函数
  • 闭包
  <script>
      // 内存溢出
      var obj={}
      for(var i=0;i<10000;i++){
        obj[i] = new Array(100000)
      }
    </script>

在浏览器打开这个页面就可以看到会报这样的错误

 

 提示我们内存溢出

在打开任务管理器可以看到内存急剧的上升,然后在下降

 

 此时程序就因为内存溢出的问题便不会运行了

在看内存泄漏

内存泄漏还能使程序运行,但是泄漏过多就会导致内存溢出

<script>
      // 意外的全局变量
      function fn(){
        a=1
        console.log(a)
      }
      fn()
      // 启动定时器之后不清理
     var timer= setInterval(function(){
        console.log('----')
      },1000)
      // clearInterval(timer)  不做清理
      
      // 闭包
      function fun(){
        var b=1
        function fun2(){
          console.log(b)
          return fun2
        }
      }
      var f=fun()
      f()
      // f=null   不做清理
     </script>

 

posted @ 2022-03-03 15:15  keyeking  阅读(100)  评论(0编辑  收藏  举报