V8

作者: 浅忆_0810 | 来源:发表于2020-10-14 23:48 被阅读0次

1. 介绍

V8是一款主流的 Javascript 执行引擎

采用即使编译

内存设限(64位操作系统:1.5 G 32位:800 M


2. V8垃圾回收策略

采用分代回收的思想

内存分为新生代、老生代

针对不同对象采用不同算法


3. V8中常用 GC 算法

3.1 分代回收

3.2 空间复制

3.3 标记清除

3.4 标记整理

3.5 标记增量


4. V8 如何回收老生代?

// 老生代对象说明
1. 老生代对象存放在右侧老生代区域
2. 64位操作系统:1.4 G,32位操作系统: 700 M
3. 老生代对象就是指存活时间较长的对象
回收实现 细节对比
新生代 1. 回收过程采用复制算法+标记整理算法
2. 新生代分为 from-to 两个等大空间 32M(32 位为 16M)
3. 使用空间为 from 内存区,空闲空间为 to 内存区,当 from 空间应用一定大小会触发标记整理
4. 当发生标记整理后,复制活动对象到 to 内存区,然后 From 空间进行内存释放。
5. 如果拷贝时出现晋升,将新生代活动对象移入老生代
6. 当 To 空间的使用率达到 25%时,将新生代活动对象移入老生代
7. 当一轮 GC 执行完毕后还存活的新生代测需要晋级
8. 当一次 GC 操作后,Fromto 需要进行置换
新生代区域垃圾回收使用空间换时间
老生代 1. 主要采用标记清除、标记整理、增量标记算法
2. 首先使用标记清除完成垃圾空间的回收
3. 采用标记整理进行空间优化
4. 采用增量标记进行效率优化
老生代区域垃圾回收不适合复制算法

4. 增量标记算法

  1. 使用时机:会穿插在程序的运行中执行。
  2. 工作原理: 对象存在直接可达和间接可达,将遍历对象标记,拆分成多个小步骤,先标记直接可达对象。
    间接可达的标记与程序执行交替执行,最终完成清除。

相关文章

  • JavaScript引擎V8中的垃圾回收机制

    目录 认识V8 V8垃圾回收策略 V8常用的GC算法 V8的分代回收V8的内存分配新生代对象回收主要使用算法回收过...

  • JavaScript可以和C++一样快

    如果看了《为V8优化JavaScript》这篇文章,就会了解到v8设计的独到之处,大家都知道v8快,但是v8有多快...

  • 认识V8

    V8介绍 V8是一款主流的JavaScript执行引擎 V8采用即时编译,运行效果快 V8内存设限(64位|1.5...

  • 2019-05-30

    1. V8内存管理和相关问题 Node.js基于V8引擎,其内存管理就是V8的内存管理。 V8内置了自动垃圾回收(...

  • Mac | 编译和使用 Google V8 引擎

    1.了解V8 登录到官网地址V8 JIT

  • V8世界探险 (1) - v8 API概览

    V8世界探险 (1) - v8 API概览 v8是Google开发的JavaScript引擎,自推出后就对js生态...

  • issue1195777

    原理 https://chromium-review.googlesource.com/c/v8/v8/+/283...

  • 认识JS V8引擎机制

    何为V8: V8 GC 回收策略: V8 常用的GC算法: 新生代对象的垃圾回收 新生代对象回收细节: 老生代对象...

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

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

  • V8 GC机制

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

网友评论

      本文标题:V8

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