前端内存泄露

148 阅读1分钟

1、什么是内存泄露

内存泄露是指程序中已动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

2、前端内存泄露的情况

1、意外声明全局变量

function name() {
name = 'hsy' 
}

内存泄露引起的原因: name没有声明,在js里面,若变量没有初始化,则默认为全局作用域。 即window.name,在window变量中,只要window本身不清理就不会消失,所以name会一直存在
解决办法: 在name前面加上关键字比如let var const

2、定时器引起内存泄露

 let sex ='girl'
setInterval(() => {
	console.log(sex);
}, 1000); 

内存泄露引起的原因: 定时器一直在运行,回调函数中的name就会一直占用内存,垃圾回收机制知道这一点,因为不会清理外部变量。
解决办法: 清除定时器,clearInterval()

3、闭包引起内存泄露

let count = function() {
  let name = 'wyx'
  return function () {
    console.log(name);
    return name
  }

内存泄露引起的原因: count存在情况下name不会被清理,因为闭包一直引用了name,如果name的数据内容很多,引起的麻烦会更多。
解决办法: let count = null,在不用count的情况下,将count置为null,下次垃圾回收机制的时候会直接回收。