4种常见的内存泄漏
1.意外的全局变量
全局变量是很难被垃圾回收器回收的。
-
未声明的变量
当我们在一个函数中给一个变量赋值但是却没有声明它时:
function fn(){
a = "aaaaa";
}
此时变量a相当于window对象下的变量
- 使用this创建的变量
function fn(){
this.a = "aaaaa";
}
这里的this的指向是window,因此此时创建的a变量也会被挂载到window对象下
避免此情况的解决方法
- 避免设置全局变量
- 在 JavaScript 文件头部或者函数的顶部加上 ‘use strict’, 开启严格模式, 使得this的指向为undefined, 这样就可以避免了
- 必须使用全局变量存储大量数据时,确保用完后把它设置为null 或者重新定义。
2.被遗忘的计时器或回调函数
- 在代码中使用定时器也有可能会造成内存泄漏:
var serverData = loadData()
setInterval(function() {
var renderer = document.getElementById('renderer')