简单理解内存溢出与内存泄露

·  阅读 2323

敲黑板

  1. 什么是内存溢出?
    • 一种程序运行出现的错误。
    • 当程序运行时需要的内存超过剩余的内存时,就会内存溢出的错误。
  2. 什么是内存泄露?
    • 占用的内存没有及时释放。
    • 内存泄露积累多了就容易导致内存溢出。
    • 常见的内存泄露:意外的全局变量、没有及时清理的定时器或回调函数、闭包。

下面我们上例子帮助理解

内存溢出

const obj = {}
for (var i = 0; i < 100000000; i++) {
   obj[i] = new Array(100000000)
   console.log('-----------------')
}
复制代码

由于循环量过大而导致物理内存不够,个别小土豪设置循环的值得要大一些。

image.png

内存泄露

1.意外的全局变量

function fn1() {
  a = 1
  console.log(a)
}
fn1()
复制代码

执行函数的时候,由于变量提升而导致a变成全局变量,函数执行完之后a还占着空间

  1. 定时器没有关闭
const intervalTime = setInterval(function () {
    console.log("------")
 }, 2000)
复制代码

由于没关闭定时器而导致内存溢出,除非浏览器关闭、刷新,不然的话会一直执行下去哟。

保存良好习惯,用完就关

clearInterval(intervalTime) // 关闭定时器,释放内存
复制代码
  1. 闭包
function fn1() {
  let a = 2
   function fn2() {
      console.log(++a)
     }
   return fn2
  }
  const fn = fn1()
  fn()
复制代码

执行完函数之后 a没有被释放掉,是因为fn保存了fn1函数。

记得清空变量,等待回收。

 fn = null // 释放内存
复制代码
分类:
前端
标签:
分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改