什么是内存泄露
只要程序提出要求 ,运行时就需要提供内存
如果是持续性的服务进程,如果不及时释放不需要的内存,就会影响系统新能,甚至直接会崩溃。
不及时释放的内存 就叫内存泄露
什么情况下会引起?
1、意外的全局变量
- 比如:创建变量的时候忘记用let或者var定义,那么会被识别为window.variable,变成全局变量
- 或者错误的通过this创建。比如function没有对象,因此this指向的是window。
2、子元素的引用,包括闭包
3、DOM清空删除,而事件没有清除
4、计时器用完没有清除
怎么防止
1、全局变量:在function前添加 “use stict” 进入严格模式,避免通过this错误创建全局变量。
2、dom事件+定时器+闭包:及时清除引用
3、使用weakset和weakmap.