JavaScript 执行引擎 V8

1. V8是什么

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

特点  
    运行速度快 因为采用了即时编译
    V8内存设限  64位 1.5G  32位 不超过 800M

2. V8 中常用的 GC 算法

分代回收
空间复制
标记清除(上一篇有写过)
标记整理(上一篇有写过)
标记增量(上一篇有写过)

3. V8 垃圾回收策略

V8中采用的是分代回收思想 
    内存分为 新生代 和 老生代
    针对不同的对象采用不同的算法

4. V8 中内存分配

4.1. V8内存一分为二

4.1.1 小空间用于存储新生代对象 (64位 32M | 32位 16M)
  • 新生代对象指哪些?

    • 新生代对象一般是指 声明周期比较短的对象 比如一些局部变量等等
  • 新生代对象回收实现过程

    1. 新生代对象进行回收实现是用 复制算法 和 标记清除
    
    2. 新生代内存区分为两个等空间大小
    
    3. 使用空间为 From 空闲空间为 To
    
    4. 活动空间存储于 From 空间
    
    5. 标记整理后 将活动对象拷贝到 To
    
    6. From 和 To 交互空间 完成释放
    
  • 回收细节

1. 拷贝过程中可能出现晋升 (晋升就是将新生代移动到老生代)

2. 一轮GC后还存活的新生代 就晋升为老生代

3. To 空间使用率超过 25% 
4.1.2 老生代对象 (64位 1.2G | 32位 700M)
  • 老生代对象指哪些?
    • 老生代对象就是存活时间比较长的对象 老生代对象存放在右侧老生代区域
  • 老生代对象回收实现
1. 主要采用标记清除 标记整理  增量标记算法

2. 首先使用标记清除完成垃圾空间的回收

3. 使用标记整理进行空间优化

4. 采用增量标记进行效率优化
4.1.3 新生代和老生代细节对比
1. 新生代区域垃圾回收使用空间换时间

2.老生代区域垃圾回收不适合复制算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值