這篇文章帶給大家的內容是關於js記憶體洩漏是什麼意思? js記憶體洩漏的介紹,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。
記憶體外洩是指一塊被指派的記憶體既不能使用,又不能回收,直到瀏覽器進程結束。
垃圾回收器定期掃描對象,並計算引用了每個對象的其他對象的數量。如果一個物件的參考數量為 0(沒有其他物件引用過該物件),或對該物件的惟一引用是循環的,那麼該物件的記憶體即可回收。
setTimeout 的第一個參數使用字串而非函數的話,會引發記憶體洩漏。
閉包、控制台日誌、循環(當兩個物件彼此引用且彼此保留時,就會產生一個循環)
釋放記憶體的方法:賦值為「null
引起記憶體洩漏的情況:
1、意外的全域變數引起的記憶體洩漏
#原因:全域變量,不會被回收。
解決:使用嚴格模式避免
2、閉包引起的記憶體洩漏
#原因:閉包可以維持函數內局部變量,使其無法釋放。
解決:將事件處理函數定義在外部,接觸閉包,或在定義事件處理函數的外部函數中,刪除DOM的參考。
3、沒有清理的DOM元素引用
原因:雖然別的地方刪除了,但是物件中還存在DOM的引用。
解決:手動刪除
4、被遺忘的計時器或回調
原因:定時器中有DOM的引用,即使DOM刪除了,但計時器還在,所以記憶體中還是有這個DOM。
解決:手動刪除定時器和DOM
5、子元素存在引用引起的記憶體洩漏
原因:p中的ul li 得到這個p,會間接引用某個得到的li,那麼此時因為p間接引用li,即使li被清空,也還在內存中,並且只要li不被刪除,它的父元素都不會被刪除。
解決:手動刪除情空
相關推薦:
##JavaScript避免記憶體外洩及記憶體管理技巧_javascript技巧
以上是js記憶體洩漏是什麼意思? js記憶體洩漏的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!