你需要知道的前端知识点,V8引擎是什么?采用哪些GC算法?

news2024/11/28 22:44:32

一、简单介绍V8引擎

  1. V8引擎是一款主流的JavaScript执行引擎;
  2. V8执行引擎采用及时编译(执行速度提升);
  3. V8引擎中内存设置有上限(下方进行详解);

二、V8回收策略

  1. 采用分代回收思想;
  2. 内存分为新生代对象存储与老生代对象存储;
  3. 针对不同的对象采用不同的算法;

在这里插入图片描述

三、常用的GC算法(垃圾回收机制)

  1. 分代回收
  2. 空间复制
  3. 标记清除
  4. 标记整理
  5. 增量算法

四、V8内存分配

在这里插入图片描述

在上图中V8内存空间一分为二 From、To作为新生代对象存储区 其则老生代存储区

新生代存储区介绍

  1. 即存活时间较短的对象(例:局部作用域内的变量执行完需要回收);
  2. 内存区分为两个等大空间(即:From空间、To空间);
  3. 在64位操作系统中内存大小位 32MB,32位操作系统中为16MB;

老生代存储区介绍

  1. 即存活时间较长的对象(例:全局变量、闭包变量数据);
  2. 在64位操作系统中内存大小位 1.5G,32位操作系统中为700MB;

五、新生代对象回收实现

  1. 回收过程采用复制算法+标记整理;
  2. 使用空间为From、空闲空间为To;
  3. 活动对象存储于From空间;
  4. 标记整理后将活动对象拷贝至To空间;
  5. From与To交换空间完成释放;

回收细节说明

  1. 在拷贝过程中可能出现晋升(即:将新生代对象移至老生代对象);
  2. 一轮GC后还存活的新生代需要晋升(移至老生代);
  3. To空间使用率超过25%(From与To进行空间交换时如果不设限会存在空间不足的情况、所以这里限制为25%);

六、老生代对象回收实现

  1. 主要采用标记清理、标记整理、增量标记算法;
  2. 首先使用标记清除完成垃圾空间的回收(存在空间碎片化、但回收速度极快);
  3. 在新生代晋升过程中,老生代空间不足以存放新生代时,则会采用标记整理进行空间优化;(整理碎片化空间);
  4. 采用增量标记进行效率优化;

七、新老生代回收细节对比

  1. 新生代区域垃圾回收使用空间换时间(采用复制算法每时每刻有空闲空间存在,即牺牲一定量空间来提升回收速度);
  2. 老生代区域垃圾回收不适合复制算法(空间较大,一分为二浪费空间,数据量大如果采用复制算法则会消耗许多时间);

八、增量标记如何进行垃圾回收

在这里插入图片描述

如图所示:程序执行与垃圾回收交替执行

总结

  1. V8引擎作为现主流的JavaScript执行引擎;
  2. 内存设置上限(作为web应用来说足够使用,超过1.5G在回收过程中会增加人体感知。 因为在回收执行时程序时停止运行的);
  3. V8采用分代回收的思想实现垃圾回收(即分为新生代、老生代储存区);
  4. V8回收中常见的GC算法 (新生代:复制算法,标记整理。老生代:标记清理,标记整理,增量标记);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26660.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Colmap 实用教程 —— Command-line Interface

https://colmap.github.io/index.html Windows 通过 COLMAP.bat,Linux 通过 colmap 使用命令行调用 Colmap 工具。 Structure-from-Motion 简要介绍 从大范围来看的话,整个流程可以分成以下三个阶段: Feature detection and extractionFe…

MQ通道常用知识列举(一)

MQ的几个基本组件: 1. 什么是通道 通道是分布式队列管理器在IBM MQ MQI 客户端和IBM MQ服务器之间或两个IBM MQ服务器之间使用的逻辑通信链路。通道用于将消息从一个队列管理器移动到另一个队列管理器。 2, 启动通道 对发送方、服务器和请求方通道使用 MQSC 命令…

CentOS 7.6安装JDK8过程(通过官网下载压缩包方式)

Oracle官网JDK下载地址 JDK8下载地址 选择tar.gz压缩包进行下载 复制下载链接,登录服务器,执行wget xxxxx(刚刚复制的下载地址) 下载完毕后,执行解压命令tar -zxvf xxxxx.tar.gz 配置/etc/profile 执行命令vim /etc…

把Mybatis Generator生成的代码加上想要的注释

作者:王建乐 1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不…

Java题目集

Java冒泡排序和查找冒泡排序,从小到达排列查找,某一个字符串输出如下数据输出杨辉三角形冒泡排序,从小到达排列 分析:数组 [15,21,20,35,10] 第 1 轮排序: 目标把最大数放在最后 第 1 次比较 [15,21,20,35,10] 第 2 次比较 [15,21,20,35,10…

目标检测 YOLOv5 - ncnn模型的加密 C++实现封装库和Android调用库示例

目标检测 YOLOv5 - ncnn模型的加密 C实现封装库和Android调用库示例 flyfish 文章目录目标检测 YOLOv5 - ncnn模型的加密 C实现封装库和Android调用库示例前言模型版本库的版本示例程序的编译环境模型的转换库的制作主要接口部分模型初始化部分推理的输入输出CMakeList的配置示…

LeetCode-878-第N个神奇数字

1、二分查找 如果我们用函数f(x)f(x)f(x)表示数字小于x的神奇数字的个数,显然我们可以得到如下的公式:f(x)⌊xa⌋⌊xb⌋−⌊xc⌋f(x)\left \lfloor \frac{x}{a} \right \rfloor\left \lfloor \frac{x}{b} \right \rfloor-\left \lfloor \frac{x}{c} \ri…

门店管理|火锅店数字化系统转型

火锅几乎是每个人的最爱,吃着火锅喝着酒,生活日子乐逍遥。在很多火锅店里,我们经常可以看见客人爆满。虽然这几天疫情的冲击导致不少餐饮商家生存很难,但随着对疫情的有效控制,餐饮行业正在回暖。 无论以前还是现在&am…

艾美捷 DetergentOUT GB-S10去垢剂的特点和多种应用

去垢剂,亦有称为清洁剂,主要成分是表面活性剂(部分场合即特指表面活性剂,可分阴离子、阳离子和中性去垢剂等多种类型,中性去垢剂在蛋白提取中应用的较多),根据实际需求有时也会包括研磨剂,pH调节剂&#xf…

Spring Cloud Alibaba(一)

整合nacos 一、项目结构small-shop为父工程&#xff0c;order(订单服务)、stock(库存服务) 二、父工程pom.xml文件&#xff0c;添加基础依赖&#xff0c;控制版本 <modules><module>order</module><module>stock</module></modules><pr…

数字时代,医疗健康企业如何通过数字营销创造用户价值

前言&#xff1a;数字化时代&#xff0c;数字营销为企业深入洞察用户需求、把握用户画像、与用户建立有效互动提供了可能性&#xff0c;从而帮助企业实现降本增效的精细化营销&#xff0c;大大提升企业的经营效率。对医疗健康企业来说&#xff0c;因其行业和需求的特殊性&#…

数据结构--单链表

1.定义 由于顺序表的插入删除操作需要移动大量的元素&#xff0c;影响了运行效率&#xff0c;因此引入了线性表的链式存储——单链表。单链表通过一组任意的存储单元来存储线性表中的数据元素&#xff0c;不需要使用地址连续的存储单元&#xff0c;因此它不要求在逻辑上相邻的…

携手!Kyligence 支持 Amazon EMR Serverless,赋能云上企业降本增效

近日&#xff0c;Kyligence 与亚马逊云科技宣布 Kyligence Cloud 4.6 正式支持 Amazon EMR Serverless&#xff0c;共同助力企业构建高效、低成本云上数据分析。今天&#xff0c;我们将为大家介绍 Kyligence Cloud 4.6 如何通过集成 Amazon EMR Serverless 提供端到端的云上数…

字节给我狠狠上了一课:危机来的时候你连准备时间都没有~

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。甚至还有不少大厂直接…

shell的test命令和两种参数获取方式,详解getopts以及eval、exec、export、read、shift内置命令

一、linux里while [-n “$1”]这里的-n是什么意思? -n str&#xff0c;字符串不为null&#xff0c;长度大于零while [ -n “$1” ] 第一个参数不为空&#xff0c;返回TRUE执行while循环do … done 二、Shell test 命令 Shell中的 test 命令用于检查某个条件是否成立&#x…

【web渗透思路】敏感信息泄露(网站+用户+服务器)

目录 一、信息泄露示例 1、示例&#xff1a; 二、泄露方式 1、原理&#xff1a; 三、泄露危害 1、危害&#xff1a; 四、泄露挖掘 1、爬虫文件 2、目录信息 3、越权访问 4、开发注释、js文件 5、错误提示 6、调试信息 7、备份等目录文件 8、配置不安全 9、版本控…

数字集成电路设计(五、仿真验证与 Testbench 编写)(五)

文章目录9. 编译预处理语句9.1 仿真时间标度10. Verilog HDL测试方法简介9. 编译预处理语句 这些在C语言中都有涉及&#xff0c;但是在硬件描述语言中相对用的不是特别多&#xff0c;比如说include&#xff0c;在语言用的特别多&#xff0c;但是在硬件描述语言很少include&…

【每天学习一点新知识】OWSAP TOP10

OWASP OWASP开放式Web应用程序安全项目&#xff08;open web application security project&#xff09;每年会通过确定企业面临的最严重的10类威胁&#xff0c;以此提高人们对Web应用程序安全的关注度。 2021年 A01 失效的访问控制 未对通过身份验证的用户实施恰当的访问控…

裸辞4个月,面试了30家公司,终于找到理想工作了

上半年裁员&#xff0c;下半年裸辞&#xff0c;有不少人高呼裸辞后躺平真的好快乐&#xff01;但也有很多人&#xff0c;裸辞后的生活五味杂陈。 面试30次终于找到心仪工作 因为工作压力大、领导PUA等各种原因&#xff0c;今年2月下旬我从一家互联网小厂裸辞&#xff0c;没想…

APS高级排产在冶金行业的应用

冶金工业是指对金属矿物的勘探、开采、精选、冶炼、以及轧制成材的工业部门。包括黑色冶金工业(即钢铁工业)和有色冶金工业两大类。随着业务量的不断扩大&#xff0c;仅具有传统的ERP系统和人工生产调度已逐渐不能满足精益生产改进的要求。建立高效的精益生产计划模型及其对应的…