JVM的三种垃圾回收算法

news2024/11/8 19:39:09

目录

1、标记-清除算法

2、标记-复制算法

3、标记-整理算法

总结:


jvm先判断哪些需要回收,哪些需要保留,通常采用可达性分析算法标记存活对象:判断对象能否回收的两种方法,以及JVM引用-CSDN博客

1、标记-清除算法

标记阶段:
从GC Roots出发,遍历所有可以到达的对象,并进行标记“存活”。

清除阶段:
算法扫描整个堆内存,找到未被标记的对象,并进行清除操作。

(当然也可以反过来,标记需要清除的对象,并进行清楚操作。)

优点:速度较快

缺点:会造成内存碎片

2、标记-复制算法

标记阶段:
从GC Roots出发,遍历所有可以到达的对象,并进行标记“存活”。

复制阶段:

将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。

优点:实现简单,复制过程可以并行执行,运行高效

缺点:可用内存缩小为一半

3、标记-整理算法

标记阶段:
从GC Roots出发,遍历所有可以到达的对象,并进行标记“存活”。

整理阶段:

让所有存活的对象都向内存空间一端移动,然后直接清理掉边界以外的内存。

优点:不会产生内存碎片,可以高效利用内存空间

缺点:需要移动存活对象的操作,增加了算法的复杂度和开销,整理过程的速度相对较慢

总结:

标记-清除算法实现简单,但会产生内存碎片问题。

标记-复制算法在并行性上更有优势,但需要额外的内存开销。

标记-整理算法解决了内存碎片问题,但需要更复杂的对象移动操作。

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

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

相关文章

数据结构(复杂度)

复杂度 算法在编写成可执行程序后,运⾏时需要耗费时间资源和空间(内存)资源。因此衡量⼀个算法的好 坏,⼀般是从时间和空间两个维度来衡量的,即时间复杂度和空间复杂度。 时间复杂度主要衡量⼀个算法的运⾏快慢,⽽空间复杂度主要…

1. 黑盒测试

黑盒测试 1. 黑盒测试定义 黑盒测试是一种软件测试技术,它可以检查软件的功能,而不会窥视其内部结构或编码。黑盒测试的主要来源是客户声明的要求规范。 黑盒测试的特点: 黑盒测试与软件的具体实现过程无关,如果实现过程发生了…

NetSuite RPA技术实践

近期有同学提出一个需求。 “需要存取的報表是存貨分類帳(stock ledger),將查到的各個[Item|Location]作為一組key,分別將報表中的「期末庫存量」「期末平均成本」「期末庫存量價值」這三欄的值,在每個月月底的時候自動將這個報表的這三欄數…

毕设项目springboot+vue实现的在线求职平台

一、前言 随着信息技术的飞速发展和互联网的普及,线上求职已成为众多求职者和企业招聘的重要渠道。为满足市场需求,我们利用Spring Boot和Vue技术栈,开发了一款功能全面、用户友好的在线求职平台。本文将对该平台的设计、实现及关键技术进行详…

轻量级CRM系统精选:10款免费在线工具

本文将分享10款国内外免费轻量级在线CRM系统管理工具:八百客CRM、用友CRM、金蝶CRM、浪潮CRM、简信CRM、Agile CRM、Capsule CRM、EngageBay、SuiteCRM、Insightly。 在选择CRM系统时,中小企业常常面临预算有限、功能需求多样的困境。许多企业希望找到一…

Ubuntu新系统的使用

1.安装显卡驱动 直接到软件与更新里面,就是一个A字图标的那个软件打开,到附加驱动里选择。要选择“server driver”的,选择后确认即可。 然后输入:nvidia-sim查看 别的方法太复杂,这个方法我亲测了两台电脑&#xff…

《SpringCloud》系列文章目录

Spring Cloud为开发人员提供了工具,可以快速构建分布式系统中的一些常见模式(例如配置管理、服务发现、断路器、智能路由、微代理、控制总线、短期微服务和合约测试)。使用Spring Cloud开发人员可以快速建立实现这些模式的服务和应用程序。它…

昇思25天学习打卡营第10天|NLP-RNN实现情感分类

打卡 目录 打卡 任务说明 流程 数据准备与加载 加载预训练词向量(分词) 数据集预处理 模型构建 Embedding RNN(循环神经网络) LSTM 全连接层 损失函数与优化器 训练逻辑 评估指标和逻辑 模型训练与保存 模型加载与测试 自定义输入测试 …

leetcode算法题(反转链表)

思路1: 创建新的链表,遍历原链表,将原链表的节点进行头插到新链表中。 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* next NULL;struct ListNode* new_head NULL;if (head NULL ||head->next NULL) // 空…

医院云HIS系统,以数字化形式提供医疗卫生行业的数据收集、存储、传递和处理服务

医院云HIS系统是一个运用云计算、大数据、物联网等新兴信息技术的业务和技术平台,旨在按照现代医疗卫生管理要求,以数字化形式提供医疗卫生行业的数据收集、存储、传递和处理服务。 具体来说,医院云HIS系统具有以下几个方面的特点和功能&…

MySQL事务隔离级别+共享锁,排他锁,乐观锁,悲观锁

在操作数据库的时候,可能会由于并发问题而引起的数据的不一致性(数据冲突)。 MySQL事务隔离级别 一个事务的执行,本质上就是一条工作线程在执行,当出现多个事务同时执行时,这种情况则被称之为并发事务&am…

node 如何运行typescript

文章目录 node 如何运行typescript手工编译 TypeScript 然后运行 JavaScript使用 ts-node创建一个typescript node项目tsconfig.json node 如何运行typescript 在 Node.js 中运行 TypeScript 代码有几种常见的方法,以下是其中几种。 手工编译 TypeScript 然后运行 JavaScript…

Docker---最详细的服务部署案例

提供python服务的docker一键部署,示例已配置负载均衡,不需要的在nginx.conf和docker-compose注释相关代码即可 文件结构 1、dockerfile # 服务的dockerfile# 服务依赖的镜像 FROM python:3.7# 设置容器内服务的工作目录 WORKDIR /app# 复制当前文件夹所…

数据库-三范式

第一范式 1 数据库所有字段都只有单一属性。 2 单一属性由基本数据类型构成。 3 数据库的表都是二维的行与列。 例如上面的例子就不满足第一范式,因为是可以继续拆分的,拆分为更多的属性。 第二范式 1 符合第一范式 2 表必须有个主建 3 其它字段可以…

企业网络运维-给华为交换机配置sftp,浏览交换机文件并下载上传

文章目录 需求实验开户stelnet权限已完成stelnet账号下的sftp配置使用xshell-sftp访问 需求 浏览交换机文件并下载上传 实验 开户stelnet权限 参考https://blog.csdn.net/xzzteach/article/details/140419150 已完成stelnet账号下的sftp配置 服务类型all包括stelnet和sf…

SadTalker数字人服务器部署

一、单独SadTalker部署 git clone https://github.com/OpenTalker/SadTalker.gitcd SadTalker conda create -n sadtalker python3.8conda activate sadtalkerpip install torch1.12.1cu113 torchvision0.13.1cu113 torchaudio0.12.1 --extra-index-url https://download.pyto…

NSSCTF中24网安培训day2中web题目

[SWPUCTF 2021 新生赛]ez_unserialize 这道题目考察php反序列化的知识点 打开题目,发现没有提示,我们试着用御剑扫描目录文件,发现存在robots.txt的文件 接着访问这个文件,发现是一段php反序列化代码,我们需要进行序…

[Windows] 油.管视频下载神器 Gihosoft TubeGet Pro v9.3.88

描述 对于经常在互联网上进行操作的学生,白领等! 一款好用的软件总是能得心应手,事半功倍。 今天给大家带了一款高科技软件 管视频下载神器 无需额外付费,永久免费! 亲测可运行!! 内容 目前主…

【B树、B-树、B+树】

目录 一、B-树(即B树)的定义及操作1.1、定义1.2、操作1.2.1、查找1.2.2、插入1.2.3、删除 二、B树的定义及操作2.1、定义2.2、操作2.2.1、查找2.2.2、插入2.2.3、删除 一、B-树(即B树)的定义及操作 1.1、定义 B-tree即B树&#…

jmeter-beanshell学习10-字符串补齐位数

每天都遇到新问题,今天又一个场景,一个字符串,如果不足11位,则左边补0,补够11位。 先要获取字符串长度,然后计算差多少位,补齐。今天又发现一个Object类型,这个类型有点厉害&#x…