javascript内存泄漏问题
1.可能引起内存泄漏的地方:
(1) 全局变量
(2) 被遗忘的定时器和回调函数
(3) DOM引用
(4) 闭包
参考文章:
1.彻底掌握js内存泄漏以及如何避免 什么是内存泄漏,以及内存泄漏的常见场景及其解决方式。
2.避免内存泄漏 vue中给出了一个示例,如何产生内存泄漏,以及如何避免内存泄漏问题。
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里面保留了哪些对象没有释放。
参考文章:
1.手把手教你排查Javascript内存泄漏
2.JavaScript 内存泄漏防范之道 1、意外的全局变量;2、闭包;3、定时器;4、事件监听器;5、缓存;6、分离的 DOM 元素;
