前端的學習已經進入了一個艱難的上升期,愈來愈發現本身學習的東西還多得多,須要掌握的知識面寬廣了不少,知識點須要理解的深度也加深了不少。今天看到前端內存泄漏相關,本身總結總結,也便於本身之後學習記憶。因爲經驗所致,必然會有不足之處,歡迎指正!前端
內存是計算機中重要的部件之一,它是與CPU進行溝通的橋樑。計算機中全部程序的運行都是在內存中進行的,所以內存的性能對計算機的影響很是大。git
內存泄漏(Memory Leak)是指程序中己動態分配的堆內存因爲某種緣由程序未釋放或沒法釋放,形成系統內存的浪費,致使程序運行速度減慢甚至系統崩潰等嚴重後果。 說白了就是 再也不用到的內存,沒有及時釋放,就叫作內存泄漏(memory leak)。es6
看完上面的解釋,腦海中就會有一點概念,計算機正常運轉會用到內存,內存像是一箇中轉站,他把你暫存的數據,立刻就會用到的數據存儲在這,以讓你更快捷方便的使用, 那你確定會想到一個問題,暫存的數據到底哪些該存儲在這裏,存儲的東西不會一直在這,又是怎麼消失的呢?github
在個人理解,前端開發中,全局的、被引用的對象就會被保存在內存中。好比咱們常見的閉包:chrome
function leak(arg) {
this.arg = arg;
}
function test() {
var l1= new leak('It is a leak');
document.body.addEventListener('click', function() {
l1.arg = 'Here you are!'
})
}
test()
複製代碼
很明顯,l1被閉包環境引用,沒法被回收瀏覽器
對前端開發來講只須要理解'引用計數法'就能夠了 語言引擎有一張"引用表",保存了內存裏面全部的資源(一般是各類值)的引用次數。若是一個值的引用次數是0,就表示這個值再也不用到了,所以能夠將這塊內存釋放。閉包
判斷內存泄露以heapUsed爲準。ide