內存泄漏

 

1.全局變量引發的內存泄露node

function foo() { name = 123; // name成爲一個全局變量,不會被回收 // 至關於 window.name = 123; }



2.閉包引發的內存泄露function bar() { this.age = 34; // 至關於window.age = 34; } bar();
var foo = (function() { var age= 25; // 被閉包引用,不會被回收 return function() { console.log(score); } })();

3.DOM被刪除或者被清空時,時間未清除致使的內存泄漏


4.被遺忘的計時器或者回調函數$('#foo').on('click', function() { console.log(1); }).remove(); // 解決方法 $('#foo').on('click', function() { console.log(1); }).off('click').remove(); // 原始解法 var foo = document.getElementById('foo'); foo.onclick = function() { console.log(1); foo.onclick = null; } // 採用事件委託 document.onclick = function(event) { event = event || window.event; if(event.target.id == 'foo') { console.log(1); } }
var someResource = getData();
setInterval(function() {
    var node = document.getElementById('Node'); if(node) { // Do stuff with node and someResource. node.innerHTML = JSON.stringify(someResource)); } }, 1000);
計時器使得節點或數據的引用再也不被須要了。若是間隔處理不能被回收,它的依賴也不能被回收。那意味着可能存儲着大量數據的someResource,也不能被回收。
相關文章
相關標籤/搜索