内存溢出与内存泄漏
内存溢出和内存泄漏
内存溢出:
- 一种程序运行出现的错误
- 当程序运行需要的内存超过了剩余的内存时,就会抛出内存溢出的错误
内存泄漏
- 占用的内存没有及时释放
- 内存泄漏积累多了就容易导致内存溢出
常见的内存泄漏:
- 意外的全局变量
- 没有及时清理的计时器或回调函数
- 闭包
<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>