如何排查并修复内存泄漏

要如何找到内存泄漏的地方?网络

网络上大部分文章只会纸上谈兵,用一写简单的demo告诉你什么样的代码会致使内存不会被js引擎回收。可是问题是:实际项目中致使内存泄漏地方,隐藏在浩如烟海的代码山当中,拿着demo里的代码去翻看项目里的文件,企图找到问题代码,几乎是不可能的事情。工具

或者告诉你如何使用Chrome开发者工具去记录和对比内存堆栈。因而看着内存变量列表里几十万个变量,犹如大海捞针。测试

代码多,文件多,找致使内存泄漏的问题代码必需要有条理。内存

按以下步骤来就行啦!开发

  1. 首先肯定致使内存泄漏的模块和什么样的操做会致使内存泄漏。
  2. 肯定出现了内存泄漏的文件范围。并找到这一块文件的总入口。为了行文方便,假设这个文件是 memory-leak.js
  3. 整理memory-leak.js的依赖树。把这个文件应用过的全部文件列成表记下来。
  4. 依次注释掉表中的文件,并测试内存泄漏是否还在。
  5. 若是在,则该文件是无辜的。若是不在,则找到了出现了内存泄漏的文件。由此缩小了问题文件的范围。
  6. 重复1~5的步骤,直到问题文件范围尽量的小。
  7. 当问题文件范围小到剩下一个文件时,则把1~5的步骤的远离用在此文件的每一行代码中。
  8. 依次注释问题文件中的代码,并测试内存泄漏是否还在。
  9. 直到找到出问题的那一行或一部分代码。
  10. 找到问题以后去解决问题就行啦!

以上是解决内存泄漏问题的一个行之有效的办法。变量

相关文章
相关标签/搜索