内存泄漏排查教程
参考资料:https://mp.weixin.qq.com/s/5PwqCbYvwtBHQBqyENJf1g
1、什么是内存泄漏
内存泄漏就是指由于疏忽或者程序的某些错误造成未能释放已经不再使用的内存的情况。
2、JS的内存分配(推荐阅读:堆栈的区别)
栈内存:存放一些简单变量,对应JS的基本类型(String
、Number
、Boolean
、null
、undefined
、Symbol
、BigInt
)
堆内存:存放一些复杂对象,对应JS的引用类型(Object、Array、Function)**
3、内存泄漏的主要场景**
1)闭包使用不当引起内存泄漏
2)全局变量
3)分离的DOM节点
4)控制台的打印
5)遗忘的定时器(setInterval)
4、排查步骤
1)打开无痕模式(主要是无痕模式会默认关闭chrome插件,避免对内存有影响)
2)检查是否存在内存泄漏
场景:例如有个按钮按了以后,发现页面很卡
打开“Performance”,按下图进行操作
3)再次检查是否存在内存泄漏(可以不做,如果第二步已经够明显能看出内存泄漏了)