设为首页 加入收藏

TOP

js垃圾回收及内存泄漏
2019-10-09 20:01:28 】 浏览:39
Tags:垃圾 回收 内存 泄漏

js垃圾回收

  • js能够自动回收申请却未使用的内存,由于每次清除需要的性能较大,不是时时在刷新,而是每隔一段时间才进行一次。
  • 回收的两种方式
    • 标记清除(常用) 在内存中先标记变量,然后清除那些那些进入环境或者引用的变量的标记,当进入环境退出环境,将被重新标记并被清除,释放出内存。
    • 引用计数 计算变量被引用的次数,引用次数为0将被清除释放内存。 缺点:
      • 无法清除那些引用次数不为0,但又不需要的内存
       let arr = [1,2,3]; console.log('ok'); //数组[1,2,3]引用次数为1,但是又没用到就会一直占着内存 //解决方式:arr.length=0 
      • 无法解决循环引用的问题
       function fn(){ let obj1 = {}; let obj2 = {}; obj1.a = obj2; obj2.b = obj1; } //解决方法:手动释放 obj1 = null obj2 = null 

内存泄漏

  • 某些情况无法释放内存,变量一直处于环境中
  • 出现内存泄漏的一些情况
    • 最常见的就是闭包了
      • 闭包会创建一个不会被销毁的栈内存。
      • 不经意的全局变量
       function fn(){ obj = {};//没用声明关键字,相当于创建了一个全局变量 } 
      • 计时器没有被清除
       setInterval() setTimeout() //解决方法 清除对应定时器的id
滑稽脸
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇JavaScript HTML DOM 节点 下一篇CSS3-transition

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目