内存泄漏和内存溢出
内存溢出:一种程序运行出现的错误,当程序运行需要的内存超过了剩余内存空间、时,就会抛出内存溢出错误
内存泄漏:占用的内存没有及时释放,内存泄漏积累过多就容易导致内存溢出,常见的内存泄漏:意外的全局变量、没有及时清理的计时器或回调函数、闭包
//内存溢出 var obj = {} for (var i = 0; i < 10000; i++) { obj[i] = new Array(1000000) console.log('-------') console.log(obj) }
//内存泄漏
//1.意外的全局变量
function fn () {
a = new Array(1000000) //全局变量
console.log(a)
}
fn() //正常如果是局部变量的话,在函数执行完成以后就会被释放,全局变量的话就一直存在于内存中
//2.定时器
var intervalid = setInterval(function () { //启动循环定时器后不清理
console.log('-----')
},1000)
//clearInterval(intervalId) //关闭
//3.闭包
function fun () {
var a = 3;
function fn1 () {
console.log(a)
}
return fn1
}
var f = fn1()
f()
不积跬步无以至千里