是指程序中己動態分配的堆內存因爲某種緣由未釋放或沒法釋放,那麼爲何沒有釋放呢(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值,能夠定位到具體代碼,進而定位到因爲閉包引發對外層變量的引用,內存未釋放markdown
另外若是是瀏覽器裏能夠經過Performance也能夠查看內存堆隨時間的變化閉包
最後插播一則小廣告~函數