JavaScript性能优化之V8垃圾回收策略

在这里插入图片描述

前言
本篇文章主要是介绍,JavaScript性能优化之V8垃圾回收策略的相关内容
V8垃圾回收策略
1.采用分代回收的思想

2.内存分为新生代和老生代

3.针对不同对象采用不同的算法
V8垃圾回收策略演示图

在这里插入图片描述

在上图所示中,内存分为两部分,一个是新生代一个是老生代,两个区域采用不同的GC算法
V8中常用的GC算法
1.分代回收

2.空间复制

3.标记清除

4.标记整理

5.标记增量
V8内存分配
1.V8内存空间一分为二

2.小空间用于存储新生代对象(32M|16M)

3.新生代指的是存活时间较短的对象

新生代对象回收实现
1.回收过程采用复制算法 + 标记整理算法

2.新生代内存区分为二个等大小空间

3.使用空间为from,空闲空间为to

4.活动对象存储于from空间

5.标记整理后将活动空间拷贝至to

6.form和to交换空间完成释放
回收细节说明
1.拷贝过程中可能出现晋升

2.晋升就是将新生代对象移动至老生代

3.一轮GC还存活的新生代需要晋升

4.To空间的使用率超过25%
v8如何回收老生代对象
老生代对象说明

1.老生代对象存放在老生代区域

2.64位操作系统内存最大为1.4G 32位操作系统内存最大为700M

3.老生代对象就是指存活时间较长的对象
老生代对象回收实现
1.主要采用标记清除算法、标记整理算法、增量标记算法

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

3.采用标记整理算法进行空间优化

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

2.老生代垃圾回收不适合使用复制算法
增量标记算法如何实现垃圾回收

在这里插入图片描述

本质上就是程序执行和GC算法交替执行

谢谢观看,如有不足,敬请指教

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值