要如何找到內存泄漏的地方?網絡
網絡上大部分文章只會紙上談兵,用一寫簡單的demo告訴你什麼樣的代碼會致使內存不會被js引擎回收。可是問題是:實際項目中致使內存泄漏地方,隱藏在浩如煙海的代碼山當中,拿着demo裏的代碼去翻看項目裏的文件,企圖找到問題代碼,幾乎是不可能的事情。工具
或者告訴你如何使用Chrome開發者工具去記錄和對比內存堆棧。因而看着內存變量列表裏幾十萬個變量,猶如大海撈針。測試
代碼多,文件多,找致使內存泄漏的問題代碼必需要有條理。內存
按以下步驟來就行啦!開發
- 首先肯定致使內存泄漏的模塊和什麼樣的操做會致使內存泄漏。
- 肯定出現了內存泄漏的文件範圍。並找到這一塊文件的總入口。爲了行文方便,假設這個文件是 memory-leak.js
- 整理memory-leak.js的依賴樹。把這個文件應用過的全部文件列成表記下來。
- 依次註釋掉表中的文件,並測試內存泄漏是否還在。
- 若是在,則該文件是無辜的。若是不在,則找到了出現了內存泄漏的文件。由此縮小了問題文件的範圍。
- 重複1~5的步驟,直到問題文件範圍儘量的小。
- 當問題文件範圍小到剩下一個文件時,則把1~5的步驟的遠離用在此文件的每一行代碼中。
- 依次註釋問題文件中的代碼,並測試內存泄漏是否還在。
- 直到找到出問題的那一行或一部分代碼。
- 找到問題以後去解決問題就行啦!
以上是解決內存泄漏問題的一個行之有效的辦法。變量