内存溢出与内存泄露
1、什么是内存溢出?
- 一种程序运行出现的错误
- 当程序运行时需要的内存超过剩余的内存时,就会内存溢出的错误
1、什么是内存泄露?
- 占用的内存没有及时释放
- 内存泄露积累多了就容易导致内存溢出
- 常见的内存泄露:1、意外的全局变量 2、没有及时清理的定时器或回调函数 3、闭包
内存溢出
var obj = {}
for (var i = 0; i < 100000000; i++) {
obj[i] = new Array(100000000)
console.log('-----------------')
}
加载页面的时候,内存不够
内存泄露
- 意外的全局变量
function fn1() {
a = 1
console.log(a)
}
fn1() // 执行函数的时候,由于变量提升而导致a变成全局变量,函数执行完之后a还占着空间
- 定时器没有关闭
var intervalId = setInterval(function () {
console.log("------")
}, 2000)
// clearInterval(intervalId) // 关闭定时器,释放内存
- 闭包
function fn1() {
var a = 2
function fn2() {
console.log(++a)
}
return fn2
}
var fn = fn1()
fn() // 执行完函数之后 a没有被释放掉,是因为fn保存了fn1函数
fn = null // 释放内存