不妨进来瞧一瞧V8引擎,web开发实例教程

本文详细介绍了V8引擎如何通过复制+标记整理算法回收新生代和老生代对象,包括对象分配、拷贝过程中的晋升策略,以及老生代对象的内存限制和回收流程。强调了实践和系统学习的重要性。
摘要由CSDN通过智能技术生成
  • 标记整理

  • 标记增量 — 为了提高效率

V8如何回收新生代对象

=====================================================================

概述


  • V8内存空间一分为二

  • 小空间用于存储新生代对象(32MB || 16MB)

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

  • 局部作用域内的变量就属于新生代

回收流程


  • 回收过程采用复制算法 + 标记整理

  • 首先将左侧的小空间也一分为二,大小相同

  • 使用空间为From,空闲空间为To

  • 将所有的变量对象都分配在From空间

  • 现在To是空闲状态,一旦我们的From空间应用到一定程度,去触发GC操作,这时会采用标记整理的操作将活动对象拷贝至To

  • 拷贝完成就意味着我们之前的From空间的对象有了一个备份,这时就可以考虑做一些回收操作了

  • 将From空间进行完全的释放,因为From里的对象在To里边有一个备份,From直接释放掉就不存在任何问题

  • 这时新生代对象就完成了一个回收操作

回收细节说明


  • 拷贝过程中可能出现晋升

  • 如果我们在拷贝时发现某一个变量对象所指定的空间呢,他在我们当前的老生代对象里边也会出现,这时我们就会出现一个所谓的 晋升 的操作

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

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

  • 当前在拷贝的一个过程中发现To空间的使用率超过了25%,那么在这时我们也需要将这一次的活动对象移动至老生代

  • 为什么是25%?

  • 因为我们在将来进行回收操作的时候需要把Form空间和To空间进行一个交换,也就是说以前的To会变成From,以前的From会变为To,这也就意味着我们的To使用率如果达到了80%,那么最终他变成活动对象的存储空间后,新的对象就存不进来了

V8如何回收老生代对象

=====================================================================

概述


  • 老生代对象存放在右侧老生代区域

  • 针对于老生代区域,在V8当中同样有一个内存大小的限制

  • 64位操作系统1.4G,32位操作系统700MB

  • 老生代对象其实指的就是当前存活时间较长的对象

  • 例如:全局对象下的变量,闭包内的变量数据

回收流程


小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

自学几个月前端,为什么感觉什么都没学到??


这种现象在很多的初学者和自学前端的同学中是比较的常见的。

因为自学走的弯路是比较的多的,会踩很多的坑,学习的过程中是比较的迷茫的。

最重要的是,在学习的过程中,不知道每个部分该学哪些知识点,学到什么程度才算好,学了能做什么。

很多自学的朋友往往都是自己去找资料学习的,资料上有的或许就学到了,资料上没有的或许就没有学到。

这就会给人一个错误的信息就是,我把资料上的学完了,估计也-就差不多的了。

但是真的是这样的吗?非也,因为很多人找的资料就是很基础的。学完了也就是掌握一点基础的东西。分享给你一份前端分析路线,你可以参考。

开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。

mg.cn/img_convert/15be8206a9f6e5bd9e8e930303b613ee.png)

还有很多的同学在学习的过程中一味的追求学的速度,很快速的刷视频,写了后面忘了前面,最后什么都没有学到,什么都知道,但是什么都不懂,要具体说,也说不出个所以然。

所以学习编程一定要注重实践操作,练习敲代码的时间一定要多余看视频的时间。

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值