内存溢出
当程序需要的内存超过了剩余的内存时,就会抛出内存溢出错误
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<script>
var arrObj={};
for (var i = 0; i < 1000000000; i++) {
arrObj[i] = new Array(9999);
console.log(arrObj);
}
</script>
</body>
</html>
内存泄漏
占用的内存没有及时释放
内存泄漏积累多了就容易导致内存溢出
常见的内存泄漏
-
占用内存很大的全局变量
var num = new Array(99999999); var num1 = new Array(99999999); var num2 = new Array(99999999); var num3 = new Array(99999999); var num4 = new Array(99999999); var num5 = new Array(99999999); var num6 = new Array(99999999); var num7 = new Array(99999999); var num8 = new Array(99999999); // 清理 num=null;
-
没有及时清理的计时器/定时器
var intervalID = setInterval(function () { console.log("----"); },1000) clearInterval(intervalID);
-
闭包
function fn1() { var num = 1111; function fn2() { num--; console.log(num); } return fn2; } var f = fn1(); f(); // 清除 f=null;