要如何找到内存泄漏的地方?网络
网络上大部分文章只会纸上谈兵,用一写简单的demo告诉你什么样的代码会致使内存不会被js引擎回收。可是问题是:实际项目中致使内存泄漏地方,隐藏在浩如烟海的代码山当中,拿着demo里的代码去翻看项目里的文件,企图找到问题代码,几乎是不可能的事情。工具
或者告诉你如何使用Chrome开发者工具去记录和对比内存堆栈。因而看着内存变量列表里几十万个变量,犹如大海捞针。测试
代码多,文件多,找致使内存泄漏的问题代码必需要有条理。内存
按以下步骤来就行啦!开发
- 首先肯定致使内存泄漏的模块和什么样的操做会致使内存泄漏。
- 肯定出现了内存泄漏的文件范围。并找到这一块文件的总入口。为了行文方便,假设这个文件是 memory-leak.js
- 整理memory-leak.js的依赖树。把这个文件应用过的全部文件列成表记下来。
- 依次注释掉表中的文件,并测试内存泄漏是否还在。
- 若是在,则该文件是无辜的。若是不在,则找到了出现了内存泄漏的文件。由此缩小了问题文件的范围。
- 重复1~5的步骤,直到问题文件范围尽量的小。
- 当问题文件范围小到剩下一个文件时,则把1~5的步骤的远离用在此文件的每一行代码中。
- 依次注释问题文件中的代码,并测试内存泄漏是否还在。
- 直到找到出问题的那一行或一部分代码。
- 找到问题以后去解决问题就行啦!
以上是解决内存泄漏问题的一个行之有效的办法。变量