天天看點

記憶體洩漏是什麼?如何解決??

1、什麼是記憶體洩漏?

占用的記憶體沒有及時釋放,記憶體洩漏積累多了容易導緻記憶體溢出

2、常見的記憶體洩漏及解決方法

意外的全局變量;沒有及時清理的計時器或者回調函數,閉包等

全局變量引起的記憶體洩漏

function fn(){
    a = 10;     // a 是全局變量,當函數執行完後并不會自動釋放記憶體
    console.log(a);
}
fn();
console.log(a);
           

計時器未結束引起的記憶體洩漏

// 計時器沒有定義結束條件,會一直無限執行
setInterval(function fn(){        
    console.log("aaaaaa");
},1000);



// 正确做法
var stop = setInterval(function fn(){       
    console.log("aaaaaa");
},1000);

clearInterval(stop);    // 結束定時器
           

閉包引起的記憶體洩漏

解決方法:

讓内部函數變成垃圾對象,指派為null,及時釋放,讓浏覽器回收閉包。

function fun(){
    var a = 10;
    function f1(){
        console.log(++a);
    }
    return f1;
}
var f = fun();
f();


// 由于閉包是會一直引用着函數内的局部變量,是以閉包内的變量并不會被浏覽器所釋放,導緻記憶體一直被占用着
           

繼續閱讀