美文网首页前端开发那些事儿
v8引擎垃圾回收机制 - 标记机制

v8引擎垃圾回收机制 - 标记机制

作者: JX灬君 | 来源:发表于2021-08-03 00:33 被阅读0次

早期node用的全停顿标记

扫描的时候,一次性全部扫描,扫描到到会给标记,扫描结束,没有被标记到的就是垃圾。

Node(v12)之后,开始采用增量标记&三色标记法组合式的方式。

  • 三色标记法:
    • 白色 - 尚未访问过
    • 黑色 - 本对象已访问过,而且本对象,而且本对象引用到到其他对象也都全部访问过了
    • 灰色 - 本对象已访问过,但是本对象引用到到其他对象尚未全部访问完,全部访问后,会转换成黑色。
  • 增量标记:
    增量标记不同与一次性全部扫描的全停顿标记法,采用的是一步一步逐步标记的方法。

    1. 一开始所有变量都是白色。
    2. 以GC Roots为根节点,首先找到最大的父节点GA -》将节点变成灰色,表示对象被GC Roots扫描过。
    3. 访问完GC Roots根节点下最大到父节点GA后,将所有灰标会变成黑标
    4. 然后在父节点GA到节点下找到最大的节点GB置为灰色,以此类推(递归的方法)。直到没有灰标,跳出循环,表示我们扫描到的内容就是变量,其他没扫描到的就是垃圾,一会清除掉。
  • 增量标记的优越性
    1.基于js和node都是单线程。
    2.GC垃圾回收机制介入扫描时,会进行线程的切换,从js执行线程切换到GC扫描线程
    3.GC清除1.5G内容花费时间约50ms
    4.如果用的全停顿标记法,那么可能因为时间过长出现页面卡顿的过程。
    5.而增量标记法,通过逐步标记的方法,不断切换线程和标记线程,从根本降低页面卡顿的问题,让整个js线程执行的更加线性,感官上更加顺滑。

相关文章

  • V8引擎的垃圾回收机制

    转载:V8引擎的垃圾回收机制

  • 简单笔记

    1. V8引擎: 采用即时编译,速度快内存设限,64 位下 1.5 G垃圾回收机制:分代回收、空间复制、标记清除,...

  • V8 内存管理和垃圾回收机制总结

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。 V8 内存管理及垃圾回收机制浅析 由于 V8 引擎的原因,No...

  • V8 GC机制

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。 V8 内存管理及垃圾回收机制浅析 由于 V8 引擎的原因,No...

  • v8垃圾回收 - 2023-02-18

    V8引擎垃圾回收策略: V8的垃圾回收策略主要是基于分代式垃圾回收机制,其根据对象的存活时间将内存的垃圾回收进行不...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

  • 优化你的内存

    这篇文章主要介绍 V8 的内存管理和垃圾回收知识。(总结来自网易课堂) V8引擎内存回收机制 为什么我们要关注内存...

  • v8引擎垃圾回收机制 - 标记机制

    早期node用的全停顿标记 扫描的时候,一次性全部扫描,扫描到到会给标记,扫描结束,没有被标记到的就是垃圾。 No...

  • JS 垃圾回收机制

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

  • 深入理解V8的垃圾回收原理

    垃圾回收机制 V8的垃圾回收策略基于分代回收机制,该机制又基于 世代假说。该假说有两个特点: 大部分新生对象倾向于...

网友评论

    本文标题:v8引擎垃圾回收机制 - 标记机制

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