内存泄露与内存溢出

内存溢出:

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

内存泄漏:

1. 占用的内存没有及时释放

2.  内存泄露积累多了就容易导致内存溢出

3. 意外的全局变量:

JavaScript 处理未定义变量的方式比较宽松:未定义的变量会在全局对象创建一个新变量。在浏览器中,全局对象是 window 。

function fun(arg) { 
    a=1
} 

//实际上是
function fun(arg) { 
    window.a=1
} 

另一种意外的全局变量可能由 this 创建

function fun() { 
    this.a = "aaa"; 
} 
 
// fun 调用自己,this 指向了全局对象(window) 
fun(); 

3. 没有及时清理的计时器或回调函数

      setInterval(function(){
        console.log("...")// 启动定时器不清理
      },100)





      var time=setInterval(function(){
        console.log("...")
      },100)
      clearInterval(time)//及时清理

 4.闭包没有释放

      function fn1() {
        var arr = new Array(999999);
        function fn2() {
          console.log(arr.length);
        }
        return fn2;
      }
      var f = fn1(); //因函数fn2被f引用,所以fn2不会被回收
      f();
      f = null;//让内部函数成为垃圾对象,回收闭包,及时释放

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端小马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值