【JavaScript】JavaScript中的GC算法
1、内存管理
内存:由可读写单元组成,标识一片可操作的空间
管理: 认为的去操作一篇空间的申请、使用和释放
内存管理:开发者主动申请空间、使用空间、释放空间
管理流程: 申请-使用-释放
// 申请
let obj = {}
//使用
obj.name = 'zs'
//释放
obj = null
2、JavaScript可达对象
可达对象表示
- 可以访问到的对象就是可达对象(引用、作用域链)
- 可达的标准就是从根触发是否能够呗找到
- JavaScript中的根就可以理解为是全局变量对象
3、JavaScript中的垃圾
- JavaScript中的内存管理是自动的
- 对象不在被引用是是垃圾
- 对象不能从跟上访问到的时候是垃圾
4、GC定义与作用
- GC就是垃圾回收机制的简写
- GC可以找到内存中的垃圾、并释放和回收空间
GC算法是什么
GC是一种机制,垃圾回收器完成具体的工作
工作的内容就是查找垃圾释放空间、回收空间
算法就是工作是擦护照和回收所遵循的规则
常见的GC算法
引用计数、标记清除、标记整理、分代回收
5、引用计数算法
- 核心思想:设置引用数,判断当前引用书是否为o
- 引用计数器,记录引用数值
- 引用关系改变时修改引用数字
- 引用数字为0时立即回收
优点
- 发现垃圾是立即回收
- 最大限度减少程序暂停
缺点
- 无法回收循环引用的对象(因为引用数字不为0)
- 时间开销大(需要维持引用计数器)
6、标记清除算法
- 核心思想: 分标记和清除两个阶段完成
- 遍历所有对象找标记活动对象(给可达对象做标记)
- 遍历所有对象清除没有标记的对象
优点
- 解决了引用计数算法中无法回收循环引用对象的缺点
缺点
- 空间碎片化:由于当前回收的垃圾对象在地址上是不连续的,所以回收后空间分散再各个角落
7、标记整理算法
- 标记整理算法可以看作是标记清除的增强
- 标记阶段的操作和标记清除一直
- 清除阶段回先执行整理,移动对象位置,整理到一起,进而减少碎片化空间

相关文章:
【JavaScript】JavaScript中的GC算法
1、内存管理 内存:由可读写单元组成,标识一片可操作的空间 管理: 认为的去操作一篇空间的申请、使用和释放 内存管理:开发者主动申请空间、使用空间、释放空间 管理流程: 申请-使用-释放 // 申请 let obj {} //使…...
从互联网到云计算再到 AI 原生,百度智能云数据库的演进
1 数据库行业发展概述 如果说今年科技圈什么最火,我估计大家会毫不犹豫选择 ChatGPT。ChatGPT 是 2022 年 11 月 30 日由 OpenAI 发布的聊天应用。它创造了有史以来用户增长最快的纪录:自 11 月 30 日发布起,5 天就拥有了 100 万活跃用户…...
C# | CountdownEvent使用教程 (通过与ManualResetEvent对比,快速了解其特性)
C# CountdownEvent使用教程 对于熟悉ManualResetEvent的同学来说,了解CountdownEvent的差异对于更好地利用它们是非常重要的。通过对ManualResetEvent和CountdownEvent的对比,我们可以更好地理解CountdownEvent的特点和使用场景。 ManualResetEvent回顾…...
2、LLVM 函数名称加密 及3种PASS的实现
sudo usermod -a -G vboxsf nowind nowind是你的虚拟机登录的用户名解决virtualbox 虚拟机共享文件夹不能使用的问题 第一种:源码内实现pass: 实现EncodeFunctionName 的pass,核心代码如下 相关文件的修改: 因为后面同样用到…...
Python网络爬虫的基础理解-对应的自我理解误区
##通过一个中国大学大学排名爬虫的示例进行基础性理解 以软科中国最好大学排名为分析对象,基于requests库和bs4库编写爬虫程序,对2015年至2019年间的中国大学排名数据进行爬取:(1)按照排名先后顺序输出不同年份的前10…...
基于ssm的家庭财务管理系统设计与实现论文
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本家庭财务管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息…...
前端知识(八)———前端需要掌握的技术有哪些方面
前端开发需要掌握的技术包括以下几个方面: 1.HTML:HTML是网页的基础骨架,是网页内容的载体,负责网页内容的排列和布局。 2.CSS:CSS是网页的样式表,负责网页的外观和样式。 一般情况下HTMLCSS是在一起使用…...
【九】spring、springmvc、springboot、springcloud
spring、springmvc 、springboot 、springcloud 简介 从事IT这么些年,经历了行业技术的更迭,各行各业都会有事务更新,IT行业技术更迭速度快的特点尤为突出,或许这也是从事这个行业的压力所在,但另一方面反应了这个行业…...
Core Web Vitals 是排名因素吗?
Core Web Vitals 会影响您的自然搜索排名吗?在本文中,我们将研究索赔、证据和判决。 Core Web Vitals 衡量页面体验信号,以确保为搜索用户提供引人入胜的用户体验。 但是 Core Web Vitals 会影响您的自然搜索排名吗? 声明&…...
“蒙企通”线上平台升级 助力内蒙古自治区民营经济发展
为进一步落实《中共中央、国务院关于促进民营经济发展壮大的意见》和内蒙古自治区党委、政府《关于进一步支持民营经济高质量发展的若干措施》,内蒙古自治区发展改革委联合自治区工商联共同开展“自治区促进民营经济发展项目”,为民营经营主体拓展市场、…...
电商早报 | 12月13日| 2023胡润男企业家榜发布:黄铮位于第三
2023胡润男企业家榜发布:拼多多创始人跻身前三 12月12日消息,胡润研究院发布《2023胡润男企业家榜》,列出了胡润百富榜中前50名中国男性企业家,总财富6.37万亿元,上榜门槛640亿元。 这是胡润研究院首次发布“男企业家…...
Terraform实战(二)-terraform创建阿里云资源
1 初始化环境 1.1 创建初始文件夹 $ cd /data $ mkdir terraform $ mkdir aliyun terraform作为terraform的配置文件夹,内部的每一个.tf,.tfvars文件都会被加载。 1.2 配置provider 创建providers.tf文件,配置provider依赖。 provider…...
ELADMIN - 免费开源 admin 后台管理系统,基于 Spring Boot 和 Vue ,包含前端和后端源码
一款简单好用、功能强大的 admin 管理系统,包含前端和后端源码,分享给大家。 ELADMIN 是一款基于 Spring Boot、Jpa 或 Mybatis-Plus、 Spring Security、Redis、Vue 的前后端分离的后台管理系统。 ELADMIN 的作者在 Github 和 Gitee 上看了很多的项目&…...
Centos安装docker显示 No Package Docker-Ce Available
安装docker 查看当前系统内核 查看方式 uname -r显示如下 [root@test ~]# uname -r 3.10.0-1127.19.1.el7.x86_64重要提示: docker内核版本必须是3.10+以上的版本 1、卸载老版本的 docker 及其相关依赖 yum remove docker docker-common container-selinux docker-selin…...
如何使用玻璃材质制作3D钻石模型
在线工具推荐: 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 当谈到游戏角色的3D模型风格时,有几种不同的风格…...
工具:Jupyter
Jupyter是一个开源的交互式计算环境,由Fernando Perez和Brian Granger于2014年创立。它提供了一种方便的方式来展示、共享和探索数据,并且可以与多种编程语言和数据格式进行交互。Jupyter的历史可以追溯到2001年,当时Fernando Perez正在使用P…...
即时通讯技术文集(第27期):实时音视频技术合集(Part2) [共17篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第27 期。 [- 1 -] 专访微信视频技术负责人:微信实时视频聊天技术的演进 [链接] http://www.52im.net/thread-1201-1-1.html [摘要] 本次专访…...
synchronized关键字的使用和原理
synchronized关键字的使用和原理 synchronized:对象锁,保证了临界区内代码的原子性,采用互斥的方式让同一时刻至多只有一个线程能持有对象锁,其它线程获取这个对象锁时会阻塞,保证拥有锁的线程可以安全的执行临界区内…...
【PHP】php发送邮箱验证码格式美化,样式美化
效果展示: 格式美化前 格式美化后 代码 大多数框架都自带有封装好的发送email方法,就不多赘述,主要写格式: <? php// 验证码过期时间 $expire 120; // 发件人邮箱 $from_email xx163.com; // 收件人 $to_email to163.com…...
【EI会议征稿中】2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)
2024年第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024) 2024 4th International Conference on Artificial Intelligence, Automation and High Performance Computing 2024第四届人工智能、自动化与高性能计算国际会议(AIAHPC 2024)将于20…...
用STM32F103和继电器DIY智能家居:低成本改造台灯/风扇的保姆级教程
用STM32F103和继电器DIY智能家居:低成本改造台灯/风扇的保姆级教程 智能家居的概念早已不再遥不可及,借助STM32F103这样的低成本微控制器和简单的继电器模块,任何人都能将普通家电升级为智能设备。本文将手把手教你如何将一个普通台灯或风扇改…...
从开发者视角看Taotoken文档与示例代码对降低接入门槛的帮助
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从开发者视角看Taotoken文档与示例代码对降低接入门槛的帮助 作为一名经常需要集成不同AI模型服务的开发者,我经历过不…...
AM62A1-Q1汽车视觉处理器:低功耗、高集成度的车载视觉解决方案
1. 项目概述:为什么我们需要一颗“小而美”的汽车视觉处理器?最近在做一个车载环视和DMS(驾驶员监控系统)的预研项目,客户对成本和功耗卡得非常死,但功能要求却一点没降:需要同时处理1到2路摄像…...
高性能Go Web框架Volo:设计原理、核心功能与生产实践
1. 项目概述:一个高性能的Go语言Web框架最近在折腾一个需要处理高并发请求的API服务,选型时又一次把目光投向了Go生态。说实话,Go的Web框架选择不少,从轻量级的Gin、Echo,到功能更全的Beego、Iris,各有各的…...
taotoken用量看板如何帮助开发者清晰掌握各模型消耗详情
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 taotoken用量看板如何帮助开发者清晰掌握各模型消耗详情 对于使用多个大模型进行开发的团队或个人而言,成本管理是一个…...
华为od机试 新系统-麻将基本胡牌型判断(C/C++/Py/Java/Js/Go)
麻将基本胡牌型判断 华为OD新系统机试真题 华为OD新系统上机考试真题 5月17号 100分题型 华为OD机试新系统真题目录点击查看: 华为OD机试新系统真题题库目录|机考题库 + 算法考点详解 题目内容 给定 14 14 14张麻将牌,只包含三种花色:万(用 1 1 1表示)、条(用...
ARM Cortex-M微控制器与瑞萨RA系列开发实战指南
1. 项目概述:从“ARM”到“瑞萨RA”的认知之旅在嵌入式开发的江湖里,如果你还在纠结于8位、16位单片机的选型,或者对“ARM Cortex-M”这个名词感到既熟悉又陌生,那么这篇文章就是为你准备的。我接触过不少从传统8051、AVR转型过来…...
IDEA通过StartApplication方式启动springboot项目报错包不存在(相关依赖都有且通过java -jar方式能启动)解决方法
现象:IDEA2020通过StartApplication方式启动springboot项目报错:包xxx不存在、找不到符号,明明相关依赖都有,而且通过java -jar方式能启动也能启动;解决方法:mvn idea:idea...
深耕 AI 全域布局,探词科技凭硬核实力领跑 GEO 新赛道
在人工智能全面渗透各行各业的当下,传统线上流量玩法逐渐触顶,依托大模型生态搭建品牌长效传播阵地,已然成为企业数字化转型的核心突破口。作为国内专注 AI 品牌全域布局的专业服务商,探词科技深耕 GEO 智能优化领域,凭…...
透明计费如何帮助精准预测与控制AI功能月度开支
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 透明计费如何帮助精准预测与控制AI功能月度开支 1. 项目背景:深度集成AI的网站 我们负责一个内容创作辅助网站&#x…...
