文章目录
内存溢出与内存泄露
内存溢出
- 是一种程序运行出现的错误
- 当程序运行需要的内存超过了剩余的内存时,就出抛出内存溢出的错误
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