内存溢出与内存泄漏
Posted iiiLISA
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了内存溢出与内存泄漏相关的知识,希望对你有一定的参考价值。
精进成长本质是消除模糊。
学到js闭包的缺点,清晰一下内存泄露。
内存泄露是指程序在申请内存后,无法释放已经申请的内存空间。
内存溢出是指程序申请内存时,没有足够的内存分配给申请者。
内存泄漏的堆积会导致内存溢出。
常见的内存泄漏:
1.全局变量引起的内存泄漏
function fn()
a = 10; //没有使用var声明,因此a 是全局变量,当函数执行完后并不会自动释放内存
console.log(a);
fn();
console.log(a);
2.计数器未结束引起内存泄漏:
setInterval(function fn() // 计时器没有定义结束条件,会一直无限执行
console.log("aaaaaa");
,1000);
// 正确做法
var stop = setInterval(function fn()
console.log("aaaaaa");
,1000);
clearInterval(stop); //结束定时器
3.闭包引起的内存泄漏
function fun()
var a = 10;
function f1()
console.log(++a);
return f1;
var f = fun();
f();
// 由于闭包是会一直引用着函数内的局部变量,所以闭包内的变量
//并不会被浏览器所释放,导致内存一直被占用着
//解决,释放闭包内存
f = null;
以上是关于内存溢出与内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章