JavaScript之内存泄漏和内存溢出
内存溢出:是一种程序运行时出现的错误;当程序运行时需要的内存超过了剩余的内存时,就会抛出内存溢出的错误。
var obj = {}
for(let i = 0;i < 1000000;i++){
obj[i] = new Array(1000000)
}
个人理解:内存溢出是最终结果,即使没有编写内存泄露的代码也有可能造成内存溢出
内存泄漏:占用的内存没有及时释放,内存泄漏积累多了就容易导致内存溢出。
常见的内存泄漏
- 意外的全局变量
function fn(){
a = 10
console.log(a)
}
fn()
for(let i = 0;i < 10;i++){
window[i] = i
}
- 没有及时清理的定时器
var timer = setInterval(() => {
console.log('----')
}, 1000)
timer = null //没有及时清理的定时器
- 闭包
function fn1() {
var arr = new Array[100000];
function fn2() {
console.log(arr.length)
}
return fn2;
}
var f = fn1();
f();
f = null // 让内部函数成为垃圾对象,释放闭包
- 事件绑定
function fn() {
var zjy = document.getElementById('zjy');
zjy.onclick = function () {
alert(zjy.innerHTML);
};
zjy = null; //解除引用,等待垃圾回收
alert(zjy); //null,说明已经不存在了
}
fn();
- 事件监听
function fn(){
console.log('zjy')
}
let zjy = document.getElementById('zjy');
zjy.addEventListener('click',fn)
zjy.removeEventListener(fn)
以自己现在的努力程度,还没有资格和别人拼天赋

浙公网安备 33010602011771号