什么情況會引起內(nèi)存泄漏蔫耽?
雖然有垃圾回收機(jī)制但是我們編寫代碼操作不當(dāng)還是會造成內(nèi)存泄漏结耀。
- 意外的全局變量引起的內(nèi)存泄漏留夜。
原因:全局變量,不會被回收图甜。
解決:使用嚴(yán)格模式避免碍粥。
- 閉包引起的內(nèi)存泄漏
原因:閉包可以維持函數(shù)內(nèi)局部變量,使其得不到釋放黑毅。
解決:將事件處理函數(shù)定義在外部嚼摩,解除閉包,或者在定義事件處理函數(shù)的外部函數(shù)中,刪除對dom的引用矿瘦。
- 沒有清理的DOM元素引用
原因:雖然別的地方刪除了枕面,但是對象中還存在對dom的引用
解決:手動刪除。
- 被遺忘的定時器或者回調(diào)
原因:定時器中有dom的引用缚去,即使dom刪除了潮秘,但是定時器還在,所以內(nèi)存中還是有這個dom易结。
解決:手動刪除定時器和dom枕荞。
- 子元素存在引用引起的內(nèi)存泄漏
原因:div中的ul li 得到這個div,會間接引用某個得到的li搞动,那么此時因為div間接引用li买猖,即使li被清空,也還是在內(nèi)存中滋尉,并且只要li不被刪除玉控,他的父元素都不會被刪除。
解決:手動清空的方式