垃圾回收机制之v8引擎

news/2024/5/2 7:45:11/文章来源:https://blog.csdn.net/D_Z_Yong/article/details/128420648

v8的内存分配 (栈(执行环境)跟堆)

堆内存负责垃圾回收机制,只有新生代和老生代两部分

新生代:对等分的(严格)
老生代: 都是由新生代转变的(连续的空间)

在这里插入图片描述

内存空间

在这里插入图片描述
注意: node(v14)已经为2GB了,内存空间可改 (因为node底层是c++,可以扩)

为什么内存才2GB(1.4GB)呢?

因为前端代码是不持久化的,做更多的是轻业务
如果回收一次1.5g堆内存50ms,那4GB要200ms
200ms专门用来回收垃圾什么事情都不做的话,显然是不能接受的,那么慢,所以更多把js做的比较轻,所以v8到现在才扩到2GB,因为没必要那么大

垃圾回收算法

新生代简单来说是copy scavenge 算法(新生代互换)
老生代 就是标记整理清除 之前是标记清除,现在是标记整理

一开始变量都是在新生代中的,满足条件才会到老生代

在这里插入图片描述

一开始有obj在from空中,之后有obj1,obj2也在from中,之后obj1,obj2代码删除了,但是内存还没有清除,只是告诉内存是垃圾,然后这个时候要加入obj3,发现form空间满了,GC就会对form进行清除,然后就把obj跟obj3copy到to空间,然后把form跟to空间对调,来回往复,这就叫新生代互换,

问题:
新生代为什么要采用copy这种形式呢?
From有32MB To也是,牺牲空间换时间(时间复杂度优先)
因为总有一半被浪费掉,因为空间浪费,copy又是最简单的操作,只要互换就行

老生代为什么不用copy呢?
因为老生代有1400MB太大了

GC有个根节点,所有变量都会变根引用

老生代算法:

  1. 广度扫描
  2. 标记
  3. 增量标记

因为速度快了, 主线程—>GC—>主线程—>GC 可能1次GC只标记了几个,让现场切换的更频繁

标记清除:
在这里插入图片描述
在这里插入图片描述

标记整理清除:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先整理后清除,
先整理后清除会覆盖垃圾,就减少了清除的操作了

新生代什么时候晋升为老生代

在这里插入图片描述

各位大佬们,觉得可以点个赞呗!!!

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

截至2022年12月共计451个信息安全国家标准 汇总

写在前面 早年刚参加信息安全工作更多的学点皮毛技术,到处找安全工具,跟踪poc,拿到一个就全网扫一遍,从来没有想过,系统化的安全工作应该怎样搞?我做的工作在安全体系中处于哪个阶段? 后来有机会做企业安全建设&…

五、Kubernetes命令行工具 (kubectl)

1、概述 kubectl 是 Kubernetes 集群的命令行工具,通过 kubectl 能够对集群本身进行管理,并能 够在集群上进行容器化应用的安装部署。 2、语法 使用以下语法从终端窗口运行 kubectl 命令: kubectl [command] [TYPE] [NAME] [flags] 其中 …

数据仓库基础与Apache Hive入门

数据仓库基本概念 数据仓库,简称数仓,用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境,分析结果为企业提供决策支持。 数据仓库本身并不生产任何数据,其数据来源于不同的外部系统同时数据仓库自…

Adobe Acrobat XI 一进去就闪退;解决Acrobat的闪退问题

一、原因分析 闪退是因为网络中校验版权时出现问题 二、解决办法 域名欺骗,添加伪造的host条目 1. 进入C:\Windows\System32\drivers\etc 找到hosts文件 2. 右机hosts,选择属性,在安全选项里,点击高级: 3. 在ho…

C++——哈希

文章目录1. unorder无序1.1unordered_map文档介绍接口说明1.2 unordered_set2.哈希常见的哈希函数2.1 直接定址法--(常用)2.2 除留余数法--(常用)(1).闭散列——开方定址发(已被淘汰)a.线性探测——冲突越多效率越低。b.二次探测(2).开散列——拉链法/哈…

深入浅出synchronized关键字

前言 无论在日常工作还是面试过程中,synchronized关键字作为并发场景下的操作,是一定要掌握的,本文从synchronized的使用方式、原理及优化三个方面,对synchronized关键字作一个系统化的说明。 使用方式 synchronized主要有三种…

Java: static,final,代码块 的详解

Java: static,final,代码块 的详解 每博一文案 山本文绪说过这样一句话:哪些决定放弃了的事,就请放弃得干干净净。哪些决定再也不见面的人,就真 的不要再见面了,不要再做背叛自己的事,如果想要…

操作手册(GB8567——88)基于协同的在线表格forture-sheet

操作手册(GB8567——88) 1引言 1.1编写目的 为了帮助用户更好的上手本系统,加快用户对forture-sheet在线表格的快速入门,本操作手册详细介绍使用forture-sheet的部分基础操作以及注意细节。 1.2前景 待开发系统的名称&#x…

ASP.NET开发的医疗健康咨询平台源码 养生知识咨询 寻根问药平台源码 C#源码

一、源码特点: 爱心医生健康知识门户网站是一个权威的医疗科普视频、语音、知识、医疗健康问答平台。 包含所有源代码和数据库,可以直接部署到IIS中使用。 二、菜单功能 网站页面: 1、首页:包含幻灯片。 2…

InnoDB详解2

文章目录InnoDB详解21 行格式1 Compact行格式详解1 变长字段长度列表(两个字节)2 NULL值列表(1个字节)3 记录头信息 (重点)2 Dynamic行格式2 页的上层结构InnoDB详解2 1 行格式 规定每条记录是怎么存储的…

解决资源消耗,top的运用记录

第一条命令uptime load average 后面的三个数字,分别代表1分钟、5分钟和15分钟内机器的平均负载 使用top命令解决负载问题 Cpu(s)这一行提供了CPU运行情况信息 这些缩写分别代表了不同含义 (1)us:用户CPU时间 运行非优雅的用户进程所占CPU时间的百…

Python学习笔记(十九)——Matplotlib入门上

目录 Matplotlib简介 导入matplotlib模块 图的参数说明 matplotlib图像组成部分介绍 matplotlib绘图步骤分析 matplotlib实现简单图像 matplotlib画布 画布-plt.figure() 实例 同一画布制作多张图像 创建多个子图 实例 plt.subplots 相关参数 调整subplot周围的间距…

简单记录一下怎么看package.json文件

首先每个vue工程文件从仓库克隆代码下来的时候,一般都会包含这个文件,这个文件非常重要,package.json包含了关于项目重要信息,如下图所示 其中包含了name、version、description、author、scripts、dependencies、devDependencies…

小结 | 决策树

一.基本原理 决策树是一种树状结构模型,每一个根节点都是一个特征判断,它的叶子节点就是它的特征分类结果 决策树是一种分类和回归的基本模型,是一棵树的形式,其实就是将平时所说的 if-else 语句构建成了树的形式。决策树主要包…

短视频引流+私域流量沉淀,一个全新的短视频和链动模式结合方案

在微盟企微助手微盟智慧零售团队的协助下,今年7月底么么茶正式开始运营企微私域,截至当前,在短短3个月时间已成功沉淀7万私域客户,线上商城GMV超145万。 么么茶旅拍的核心流量来源自公域短视频平台,品牌基于服务覆盖下…

deck.gl 调研

0 结论 deck gl 是基于 WebGL 的数据可视化框架,可以集成在主流的地图框架(arcgis,google maps,mapbox )中使用, 也可以单独使用。 deck gl 通过layer进行数据可视化,支持多种展示效果&#xf…

ASP.NET开源版MES加工装配模拟系统源码/WinForm工厂加工装配系统源码/流程工序管理

一、源码描述 本系统用户大学机械科上位机加工装配模拟实验,目前正常用于实验当中。环境:VS2010(C# .NET4.0,多层结构)、sqlserver2008 r2 ;Winform;使用到RFID读写器(设备是可以变更的,修改RFID.Library项目的…

数字三角形问题

数字三角形问题一、题目描述二、题目分析1、问题分析2、思路分析(1)状态转移方程状态表示状态转移(2)循环的设计三、代码实现一、题目描述 二、题目分析 1、问题分析 这道题给我们的第一眼感觉就是情况太多了,太复杂…

【TypeScript】常用类型声明详情概述

目录 TypeScript常用类型 类型注解 TS类型概述 原始类型 数组类型 对象类型 函数类型 类型别名 接口 元组 字面量类型 枚举 any类型 typeof操作符 类型推论 类型断言 TypeScript常用类型 TypeScript是JS的超集,TS提供了JS的所有功能,并额…

PyInstaller的常用打包命令

学习了pyqt后,设计了界面,并且需要打包为exe程序。 每次打包时,都要查好久资料,故此记录一下常用的命令。 PyInstaller 是一个 Python 应用程序打包工具,它可以将 Python 程序打包为单个独立可执行文件。 要使用 P…