首頁 >web前端 >js教程 >js記憶體洩漏是什麼意思? js記憶體洩漏的介紹

js記憶體洩漏是什麼意思? js記憶體洩漏的介紹

不言
不言原創
2018-08-15 17:22:263847瀏覽

這篇文章帶給大家的內容是關於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記憶體外洩的幾種情況詳細探討_javascript技巧

以上是js記憶體洩漏是什麼意思? js記憶體洩漏的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn