美文网首页Web前端之路让前端飞
JavaScript中的垃圾收集

JavaScript中的垃圾收集

作者: baiying | 来源:发表于2017-07-24 15:39 被阅读16次

JavaScript具有自动垃圾回收机制,垃圾回收机制会按照固定的时间间隔周期性地执行这一操作,垃圾回收机制必须跟踪哪个变量有用哪个变量没用,对于不再有用的打上标记,以备将来回收内存,用于标记无用变量的策略因实现而异,具体到浏览器中的实现,以下两种最为常用.

标记清除

这是JavaScript中最常用的垃圾收集方式

  • 运行时:垃圾收集器给内存中的所有变量都加上标记
  • 去掉环境中的变量以及被环境中的变量引用的变量的标记
  • 之后再被加上标记的变量则被视为准备删除的变量
  • 垃圾收集器销毁带有标记的值并回收所占用的内存空间

引用计数

顾名思义该方法就是记录每个被引用的次数,声明一个变量,将一个值赋值给这个变量,则该值的引用次数为1,同一个值又被赋给另一个变量,引用次数加1,相反这个变量取了另外一个值,则引用次数减1,当引用次数变为0时,则没有办法再访问这个值,垃圾收集器下次运行碰到引用次数为0 的值,所占内存就会被回收.

  • 循环引用:引用计数最大的问题就是循环引用导致内存无法回收
  • 虽然为了避免这个问题,现在基本都采用标记清除的方式,但是IE中有一部分对象不是原生JavaScript对象,例如BOM,DOM中的对象就是以COM对象的形式实现的,而COM采用的是引用计数的垃圾回收机制.所以还是会碰到这个问题.为了避免可以在不使用时收到断开原生JavaScript对象与DOM对象的连接.

解除引用

为了让性能更佳,一旦数据不再使用,最好通过将值设置为null来释放其引用,这个方法法叫做解除引用.

function sum(a,b){
return a+b;
}
let result = sum(1,2);
//执行相应操作
//解除result的引用
result = null;

相关文章

  • JavaScript中的垃圾收集

    JavaScript具有自动垃圾回收机制,垃圾回收机制会按照固定的时间间隔周期性地执行这一操作,垃圾回收机制必须跟...

  • JavaScript中的垃圾收集

    程序的运行需要内存。 javaScript使用自动内存管理,这被称为“垃圾回收机制”。 优点是可以简化开发、节省代...

  • 闭包会造成内存泄漏吗?

    前言 在谈内存泄漏这个问题之前先看看JavaScript的垃圾收集机制,JavaScript 具有自动垃圾收集机制...

  • js之内存泄漏

    一、JavaScript 的垃圾收集机制 javascript具有自动垃圾收集机制,也就是说,执行环境会负责管理代...

  • JavaScript之垃圾收集

    垃圾收集 JavaScript 具有自动垃圾收集机制,执行环境会负责管理代码执行过程中使用的内存。这种垃圾收集机制...

  • 垃圾收集与内存泄漏

    垃圾收集机制 与C,C++不同,JavaScript拥有自动垃圾收集机制,垃圾收集器会按照固定的时间间隔,周期性的...

  • JavaScript垃圾收集

    JavaScript是一门具有自动垃圾收集机制的编程语言,开发人员不必关心内存分配和回收问题。可以对JavaScr...

  • JavaScript - 垃圾收集

    JavaScript 具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。 1.标记清除 ...

  • javaScript垃圾收集

    javaScript具有自动垃圾收集机制,开发人员不用再关心内存的使用问题,执行环境会负责管理代码执行过程中使用的...

  • JavaScript入坑第一步:夯实基础

    目录 JavaScript的基本数据类型 JavaScript的执行环境和作用域链 JavaScript的垃圾收集...

网友评论

    本文标题:JavaScript中的垃圾收集

    本文链接:https://www.haomeiwen.com/subject/eiebkxtx.html