jvm 07 GC算法,内存池,对象内存分配

news2024/10/8 15:04:37

01 垃圾判断算法
1.1引用计数算法

最简单的垃圾判断算法。

在对象中添加一个属性用于标记对象被引用的次数,每多一个其他对象引用,计数+1,
当引用失效时,计数-1,如果计数=0,表示没有其他对象引用,就可以被回收。

这个算法无法解决循环依赖的问题。

在这里插入图片描述
1.2 可达性分析算法

通过一系列被称为“GC Roots”的根对象作为起始节点集,从这些节点开始,根据引用关系链向下搜索,
如果某个对象无法被搜索到,则说明该对象无引用执行,可回收。相反,则对象处于存活状态,不可回收。

JVM中的实现是找到存活对象,未打标记的就是无用对象,GC时会回收。

在这里插入图片描述
02.垃圾回收算法

2.1标记-清除算法

标记:Collector 从引用根节点开始遍历,标记所有被引用的对象。一般是在对象的 Header 中记录为可达对象。标记的是引用的对象,不是垃圾!!

清除:Collector 对堆内存从头到尾进行线性的遍历,如果发现某个对象在其 Header中 没有标记为可达对象,则将其回收。
在这里插入图片描述

 不足:
1效率问题:标记和清除两个过程的效率都不高。

2空间问题:标记清除后会产生大量不连续的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要 分配较大对象时,无法找到足够的连续内存而不得不提前出发另一次垃圾收集动作。

2.2 复制算法(Copying)
1将原有的内存空间分为两块,每次只使用一块,

2在垃圾回收时,将正在使用的内存中的存活对象复制到未被使用的内存块中,然后清除正在使用的内存块中的所有对象。

3交换两个内存的角色,完成垃圾回收。在这里插入图片描述

2.3 标记—整理算法(Mark-Compact)

1标记阶段:先通过根节点,标记所有从根节点开始的可达对象,未被标记的为垃圾对象

2整理阶段:将所有的存活对象压缩到内存的一段,之后清理边界外所有的空间
在这里插入图片描述
标记-压缩算法

 适合用于存活对象较多的场合,如老年代。

 它在标记-清除算法的基础上做了一些优化。和标记-清除算法一样,标记-压缩算法也首先需要从根节点开始,对所有可达对象做一次标记。但之后,它并不简单的清理未标记的对象,而是将所有的存活对象压缩到内存的一端。之后,清理边界外所有的空间。

在这里插入图片描述

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

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

相关文章

Springboot 设置个性化banner

在 Spring Boot 中自定义 banner 的方法有几种,可以通过以下步骤来实现: 1、使用文本文件作为 banner 在 src/main/resources 目录下创建一个名为 banner.txt 的文件。 编辑这个文件,输入想要显示的文本。确保文本中包含换行符和空格…

【排序 - 插入排序 和 希尔排序】

插入排序(Insertion Sort)是一种简单直观的排序算法,它的工作原理是逐步构建有序序列。在排序过程中,它将未排序的元素逐个插入到已排序的部分中,从而在每次插入时扩展已排序序列的长度。 原理介绍 插入排序的基本思…

mindspore打卡20天之Shufflenet图像分类

ShuffleNet图像分类 当前案例不支持在GPU设备上静态图模式运行,其他模式运行皆支持。 ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型,和MobileNet, SqueezeNet等一样主要应用在移动端,所以模型的设计目标就是利用有…

浅谈后置处理器之边界提取器

浅谈后置处理器之边界提取器 边界提取器(Boundary Extractor)作为一种常用的后置处理器,主要用于从服务器响应中提取特定内容,这些内容可以是文本、变量或cookies等,以便于后续请求中重用。本文档将详细介绍如何在JMe…

高阶面试-dubbo的学习

SPI机制 SPI,service provider interface,服务发现机制,其实就是把接口实现类的全限定名配置在文件里面,然后通过加载器ServiceLoader去读取配置加载实现类,比如说数据库驱动,我们把mysql的jar包放到项目的…

人员定位系统可以用在哪些方面?为什么这么受欢迎?

人员定位系统大家都不陌生,它也随着科技的发展变得越来越高端、功能也越来越完善了。从一开始的对讲机沟通到后来的蓝牙定位等等,定位系统的精准度越来越高不说,续航能力也越来也强,以往比较单一和迷你的汽车定位产品都能达到一年…

《故障复盘 · 记一次事务用法错误导致的大量锁表问题》

📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…

VS2019使用C#写窗体程序技巧(1)

1、打开串口 private void button1_Click(object sender, EventArgs e){myPort cmb1.Text;mybaud Convert.ToInt32(cmb2.Text, 10);databit 8;parity Parity.None;stopBit StopBits.One;textBox9.Text "2";try{sp new SerialPort(myPort, mybaud, parity, dat…

蓝卓创始人褚健:工业互联网平台技术赋能中小企业数字化转型的实施路径

工业4.0是由工业软件驱动的工业革命,与传统厚重的工业软件不同,supOS就好比嵌入工厂的“安卓系统”。如果把一个工厂当作一台手机,因为有安卓或苹果开放的操作系统,吸引了全世界聪明的人开发了大量APP供人们使用,手机才…

java:将集合中的数据放到文件中

代码实现目标&#xff1a; 将集合中的数据写道文件中通过字符缓冲输出流实现 代码展示 public static void main(String[] args) throws IOException {//创建ArrayList集合ArrayList<Student> array new ArrayList<>();//创建学生对象Student s1 new Student(&…

昇思25天学习打卡营第14天|基于MindSpore的红酒分类实验

背景介绍 本文主要介绍使用MindSpore在部分wine数据集上进行KNN实验。 K近邻算法原理 K近邻算法&#xff08;K-Nearest-Neighbor, KNN&#xff09;是一种用于分类和回归的非参数统计方法&#xff0c;最初由 Cover和Hart于1968年提出(Cover等人,1967)&#xff0c;是机器学习最…

IPv4到IPv6的转换

为何要向IPv6过渡&#xff1a; 随着互联网的飞速发展&#xff0c;越来越多的设备接入网络&#xff0c;IPv4地址资源日益匮乏&#xff0c;已无法满足不断增长的需求。 IP地址定位&#xff1a;IP数据云 - 免费IP地址查询 - 全球IP地址定位平台 IPv6的出现为解决这一问题提供了…

基于OOB的NFTL设计

Nand flash设备存储结构示例 上图是一个1056Mb的存储设备。页面用户数据 空间是2KB&#xff0c;OOB是64字节&#xff0c;每个块 包含64个页面&#xff0c;一共 1024个块。用户数据 空间是128MB&#xff0c;OOB空间是4MB。 每个页面的OOB保留一个字节 用于坏块 标识 &#xff0c…

Elasticsearch 更新指定字段

Elasticsearch 更新指定字段 准备条件查询数据更新指定字段更新子级字段 准备条件 以下查询操作都基于索引crm_clue来操作&#xff0c;索引已经建过了&#xff0c;本文主要讲Elasticsearch更新指定字段语句&#xff0c;下面开始写更新语句执行更新啦&#xff01; 查询数据 查…

Flat Ads:金融科技应用的全球化趋势与发展前景

近年来,全球金融应用市场遭遇了重大严峻考验与深刻变革,但即便在全球经济承受重压、市场波动加剧的背景下,金融科技应用仍展现出了强大的韧性与蓬勃的增长动力。相关机构预计,2023 年全球金融应用市场的总收入达到 15.5亿美元的新高,实现了同比19%的显著增长,而到2027年,这一数…

【源码+文档+调试讲解】超市进销存管理系统

摘 要 21世纪的今天&#xff0c;随着社会的不断发展与进步&#xff0c;人们对于信息科学化的认识&#xff0c;已由低层次向高层次发展&#xff0c;由原来的感性认识向理性认识提高&#xff0c;管理工作的重要性已逐渐被人们所认识&#xff0c;科学化的管理&#xff0c;使信息存…

探索 ASTRA.AI:打造低代码多模态 AI 应用的开源平台

声网&#xff08;Agora&#xff09;研发的 ASTRA 平台&#xff0c;作为一款面向大语言模型应用开发的开源解决方案&#xff0c;无疑为 AI 领域注入了新的活力。它巧妙地结合了 BaaS&#xff08;后端即服务&#xff09;概念与大型语言模型的运营&#xff0c;使得创建高性能的生成…

开发情绪识别人工智能时的道德考量

情绪调节人工智能是机器学习领域的最新技术进步之一。尽管它显示出巨大的潜力&#xff0c;但道德问题将影响其采用率和寿命。人工智能开发人员能克服这些问题吗&#xff1f; 什么是情绪识别人工智能&#xff1f; 情绪识别人工智能是一种机器学习模型。它通常依赖于计算机视觉…

AI算力中心研究分析

中国 AI 算力中心研究报告 算力产业稳健发展&#xff0c;算力创新能力持续增强&#xff0c;推动我国数字经济量质齐升。 2022 年我国算力规模稳步扩张&#xff0c;算力发展为拉动我国 GDP 增长做出突出贡献&#xff0c;在 2016-2022 年期间&#xff0c;我国算力规模平均每年增…

基于springboot+vue的文件管理系统

一、系统架构 前端&#xff1a;vue2 | element-ui 后端&#xff1a;springboot | mybatis-plus 环境&#xff1a;jdk1.8 | mysql | maven | node 二、代码及数据库 三、功能介绍 01. 注册 02. 登录 03. 管理员-首页 04. 管理员-个人中心-修改密码 05. …