javascript内存泄漏问题
1.可能引起内存泄漏的地方:
(1) 全局变量
(2) 被遗忘的定时器和回调函数
(3) DOM引用
(4) 闭包
2.谷歌浏览器调试
这里推荐一个Gmail团队也在用的 “three snapshot”技巧:
- 1.打开DevTools, 切换至Memory面板
- 2.先记录一个堆内存快照
- 3.在你的页面上执行可能发生泄漏的操作
- 4.再记录一个堆内存快照
- 5.重复执行多几遍步骤3
- 6.最后记录一个堆内存快照
- 7.选择最后一个堆内存快照,找到顶栏的“All objects”, 切换至”Objects allocated between snapshots 1 and 2”(也可以对2,3执行同样的操作)过滤出两份快照之间新分配的对象
- 8.切换后,你就能看到两个快照之间新生成的对象。你可以选择其中一项点开,看看它的retaining tree里面保留了哪些对象没有释放。