1. 記憶體溢出
* 一種程式運作出現的錯誤
* 當程式運作需要的記憶體超過了剩餘的記憶體時, 就出抛出記憶體溢出的錯誤
2. 記憶體洩露
* 占用的記憶體沒有及時釋放
* 記憶體洩露積累多了就容易導緻記憶體溢出
* 常見的記憶體洩露:
* 意外的全局變量
* 沒有及時清理的計時器或回調函數
* 閉包
<!--
1. 記憶體溢出
* 一種程式運作出現的錯誤
* 當程式運作需要的記憶體超過了剩餘的記憶體時, 就出抛出記憶體溢出的錯誤
2. 記憶體洩露
* 占用的記憶體沒有及時釋放
* 記憶體洩露積累多了就容易導緻記憶體溢出
* 常見的記憶體洩露:
* 意外的全局變量
* 沒有及時清理的計時器或回調函數
* 閉包
-->
<script type="text/javascript">
// 1. 記憶體溢出
var obj = {}
for (var i = 0; i < 10000; i++) {
obj[i] = new Array(10000000)
console.log('-----')
}
// 2. 記憶體洩露
// 意外的全局變量
function fn() {
a = new Array(10000000)
console.log(a)
}
fn()
// 沒有及時清理的計時器或回調函數
var intervalId = setInterval(function () { //啟動循環定時器後不清理
console.log('----')
}, 1000)
// clearInterval(intervalId)
// 閉包
function fn1() {
var a = 4
function fn2() {
console.log(++a)
}
return fn2
}
var f = fn1()
f()
// f = null