是指程序中己動態分配的堆內存因爲某種緣由未釋放或沒法釋放,那麼爲何沒有釋放呢(1.根據JS的垃圾回收機制,當內存中引用的次數爲0的時候內存纔會被回收 , 2.從根部出發觸及到的對象被標記爲再也不使用纔會被釋放)數組
泄漏前,泄漏中,經過Delta對比對象變化瀏覽器
function Foo(){
var stage = []
setInterval(() => {
debugger
this.data = {
name: 'wbczxxxxxxxxxxxxxxxxxx',
hobby: {
phone: '11'
},
}
stage.push(this.data)
});
}
const foo = new Foo()複製代碼
若是你還不能確認是閉包致使的問題,經過調試工具右下角能夠發現造成了閉包緩存
打快照發現,Js Arrays對象內存明顯上升bash
又經過Delta發現,array數組下的對象的個數在遞增,經過對象的key值,能夠定位到具體代碼,進而定位到因爲閉包引發對外層變量的引用,內存未釋放閉包
另外若是是瀏覽器裏能夠經過Performance也能夠查看內存堆隨時間的變化函數