内存溢出
一种程序运行出现的错误
当程序运行需要的内存超过了剩余的内存时,就会抛出内存溢出的错误
内存泄漏积累多了就容易导致内存溢出,造成的结果就时程序进程直接被杀,甚至直接死机
var obj = {}
for(var i = 0; i < 100000000000; i++){
obj[i] = new Array[100000000000]
}
内存泄漏
占用的内存没有及时释放,所以当内存泄漏累积到一定程度的时候,就会导致内存溢出
常见的内存泄露
//1. 意外的全局变量
function fn(){
a = 10086
console.log(a)
}
fn()
//由于没有使用var关键字去定义变量a,导致变量a成为了一个全局变量,fn调用结束后还保存在内存中 ```
//2. 没有及时清理的计时器或者回调函数
```typescript
var id = setInterval(function(){
console.log('哇哈哈')
}, 100)
//clearInterval(id) 这句没执行,计时器还在
//3. 没有及时清理的闭包
function fn1(){
var a = 1
function fn2(){
console.log(++a)
}
return fn2
}
var f = fn1()
f()
//f = null 这句没执行,闭包仍然存在