美文网首页
JS 垃圾回收

JS 垃圾回收

作者: 弹指一挥间_e5a3 | 来源:发表于2020-12-12 10:03 被阅读0次

内存

JS 数据的存储地址分为栈内存堆内存

栈内存
  存放基础数据类型(如: String Number Boolean Symbol)以及函数和对象的引用地址
堆内存
  存放对象的具体值

在 JS 存放数据的内存中又分为高位低位,其中高位存放栈数据,低位存放堆数据,堆数据不可控数据的大小。

垃圾回收(Garbage Collection)

堆数据的垃圾回收

在堆数据中,又分为新生代数据老生代数据,新生代数据是指新创建的数据,老生代是指在新生代数据中被标记存活下来的数据,也就是上一次扫描中没有被清理掉的数据,老生代不容易被回收。

对于新生代数据使用 scavenge 算法。具体是将新生代数据的内存一分为二,分别为 fromto

第一次创建的堆数据将进入 from 中。from 中的数据如果满了,将进行一次 GC 。也就是对 from 中的堆数据遍历一次进行标记清除。标记的数据将全部拷贝到 to 中,然后清除掉 from 中的数据。然后再次新创建的数据将放到 to 中。如果 to 的内存满了,又会进行一次 GC。上一次 GC 中被标记的数据将进入到老生代内存中。也就是说新生代的数据有一部分晋升了。

对于老生代数据的垃圾回收是标记清楚+标记整理
老生代内存满了会触发一次 GC,遍历一遍老生代数据,删除没有被使用的数据。剩余的数据段会存在不连续,还有内存,分配不了大数据的问题。所以会进行标记整理,也就是对老生代数据进行移动整合内存段,但是这样会造成浏览器卡顿。所以会进行增量标记增量整理,每次只移动一段。

相关文章

  • JS 垃圾回收机制

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

  • JavaScript内存管理

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

  • JS内存空间详解(摘录)

    js具有自动垃圾回收机制,垃圾回收的方法有两种:标记清除法、计数清除法 垃圾回收的实现算法: 垃圾回收器创建一个"...

  • 垃圾回收

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

  • js内存管理

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

  • 闭包的理解。

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

  • 垃圾回收

    垃圾回收一共分两种:栈中的垃圾回收和堆中的垃圾回收 栈中的垃圾回收 JS 引擎有一个记录当前执行状态的指针,称为 ...

  • Javascript垃圾回收机制

    简介 JS自带一套内存管理引擎,负责创建对象、销毁对象,以及垃圾回收。这期探讨一下垃圾回收机制。垃圾回收机制主要是...

  • js垃圾回收

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

  • js 垃圾回收

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

网友评论

      本文标题:JS 垃圾回收

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