内存溢出与内存泄漏

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;

以上是关于内存溢出与内存泄漏的主要内容,如果未能解决你的问题,请参考以下文章

内存泄漏与内存溢出是什么?

内存泄漏与内存溢出

内存溢出和内存泄漏分别是啥意思?

java内存泄漏与内存溢出

内存泄漏/溢出

内存泄漏与内存溢出的区别