美文网首页
【js】js垃圾回收是什么?

【js】js垃圾回收是什么?

作者: Adder | 来源:发表于2021-06-08 12:11 被阅读0次

长久不用的一些在内存中的变量会被浏览器回收掉,具体的咋回收的呢

GC——垃圾回收

找出不再使用的变量,然后释放掉占用的内存;因此垃圾回收器会定期的执行。

var a = "造火箭";
var b = "拧螺丝";
var a = b;

造火箭这个字符串失去了引用(之前是被a引用),系统检测到之后,就会释放该字符串的储存空间,以回收利用

如何知道,到底哪些内存可回收?

一个循环引用的🌰:

function cycle() {
    var o1 = {};
    var o2 = {};
    o1.a = o2;
    o2.a = o1; 

    return "cycle reference!"
}

cycle();

1.标记清除

标记阶段:从根部开始,逐层往里遍历,遍历到堆中的对象时,说明有被使用,立马打上标记,继续往下遍历直到最深的一层节点
清除阶段:遍历整个堆,回收没有打上标记的对象。

  • 可以解决循环引用问题,因为两个对象从全局对象出发无法获取。因此,他们无法被标记,他们将会被垃圾回收器回收
  • 是否加标记,只需要分两种情况做标志位,节省空间

所以现在对于主流浏览器来说,只需要切断需要回收的对象与根部的联系。

2.引用计数 (现代浏览器不常用了)

优点和原理:

  • 即刻回收,当被引用次数为0时,对象马上会把自己作为空闲空间连到空闲链表上,也就是,在变成垃圾的时候就立刻被回收。
  • 因此就不用去遍历堆里面的所有活动对象和非活动对象

劣势:

  • 万一被引用次数很大,需要很大内存来储存记录的次数;
  • 循环引用无法解决,因为他们的被引用次数,均不会为零

相关文章

  • JS 垃圾回收机制

    从下面这几个方面简单介绍:JS 垃圾回收机制,几种?weakMap, WeakSet JS 垃圾回收机制, 标记清...

  • 【js】js垃圾回收是什么?

    长久不用的一些在内存中的变量会被浏览器回收掉,具体的咋回收的呢 GC——垃圾回收 找出不再使用的变量,然后释放掉占...

  • JavaScript内存管理

    JS内存回收 JS 有自动垃圾回收机制,就是找出那些不再继续使用的值,然后释放其占用的内存。 垃圾回收算法: 引用...

  • js内存管理

    导读:js是高级语言,有自带的垃圾回收器,一般认为js开发可以不用关心内存管理。然而这是错误的。 js垃圾回收算法...

  • 垃圾回收

    js的垃圾回收 原文:https://segmentfault.com/a/1190000018605776 垃圾...

  • 闭包的理解。

    js的垃圾回收机制 当一个函数执行完,js引擎会回收不再使用的内存,闭包通过这个作用域的引用,阻止了垃圾回收。 什...

  • JS垃圾回收机制

    JS中最常用的垃圾回收机制------标记清除 JS中最长用的垃圾回收机制是标记清除,当变量进入环境时,这个变量就...

  • js垃圾回收

    像C语言这种偏底层的高级语言,是需要程序员手动申请和释放内存的,典型的用了 malloc 和 free 两种方法。...

  • js 垃圾回收

    js 中垃圾回收机制 引用内存会一直存在,直到不被使用标记,人为清除如:设为 null、浏览器关闭、页面关闭 局部...

  • js垃圾回收

    和C#、Java一样JavaScript有自动垃圾回收机制,也就是说执行环境会负责管理代码执行过程中使用的内存,在...

网友评论

      本文标题:【js】js垃圾回收是什么?

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