【JVM】第四篇 垃圾收集器ParNewCMS底层三色标记算法详解

news2024/12/24 0:33:06

导航

      • 一. 垃圾收集算法详解
        • 1. 分代收集算法
        • 2. 标记-复制算法
        • 3. 标记-清除算法
        • 4. 标记-整理算法
      • 二. 垃圾收集器详解
        • 1. Serial收集器
        • 2. Parallel Scavenge收集器
        • 3. ParNew收集器
        • 4. CMS收集器
      • 三. 垃圾收集底层三色标记算法实现原理
        • 1. 垃圾收集底层使用三色标记算法的原因?
        • 2. 垃圾收集器使用三色标记算法的步骤
        • 3. 多标-浮动垃圾
        • 4. 漏标-读写屏障
      • 四. CMS并发清理阶段会误删新生成的对象吗?
      • 五. 从Hotsport源码级别讲透读写屏障彻底理解三色标记
        • 1. 写屏障
        • 2. 写屏障实现原始快照(SATB)
        • 3. 写屏障实现增量更新
        • 4. 读屏障
        • 5. 记忆集和卡表

一. 垃圾收集算法详解

在这里插入图片描述

1. 分代收集算法

  根据对象存活周期的不同将内存分为几块。一般将堆分为新生代和老年代,根据不同年代的特点选择合适的垃圾收集算法。
如在新生代中,每次GC都会有大量的对象(99%)死去,所以选择复制算法,只需要付出少量对象的复制成本就可以完成每次垃圾收集。
如老年代中对象的存活几率是非常高的,而且没有额外的空间进行分配担保,所以选择“标记-清除”或“标记-整理”算法进行垃圾收集。
注意:“标记-清除”或“标记-整理”算法会比复制算法慢10倍以上。

2. 标记-复制算法

  将内存分为大小相同的两块,每次使用其中的一块。当这一块的内存使用完后,就将还存活的对象复制到另一块去,然后再把使用的空间一次清理掉。这样就使每次的内存回收都是对内存区间的一半进行回收。
在这里插入图片描述
优缺点: 效率高,但是只能使用在年轻代,不能使用在老年代中,老年代中大多数的对象都是存活的,没有多余的担保空间来将内存一分为二。

3. 标记-清除算法

  算法分为“标记”和“清除”阶段:标记存活的对象,统一回收所有未被标记的对象(一般选择这种);也可以反过来,标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。
在这里插入图片描述
优缺点:
效率问题(如果需要标记的对象太多,效率不高)
空间问题(标

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

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

相关文章

C++ - set 和 map 的实现(下篇)- set 和 map 的迭代器实现

前言 在上篇当中我们为了 让红黑树适用于 set 和 map 对红黑树进行了修改,还是实现了红黑树的迭代器,因为 set 和 map 的底层都是使用 红黑树,那么,set 和 map 的迭代器也就实现了。具体可以看本博客的上篇:C - map 和…

Windows提权辅助工具WES-NG使用

Windows提权辅助工具WES-NG使用 1.下载安装2.开始使用1.下载安装 WES-NG 执行此命令更新CVE数据库: python wes.py --update2.开始使用 首先,生成系统systeminfo信息,并重定向一个txt文件中: systeminfo > systeminfo.txt查找提权可以利用的CVE: python wes.py s…

还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(二)

续接上文:还不知道数据类岗位的相关技能和职责吗?涤生大数据告诉你(一) 1.数据治理工程师 工作职责 数据治理工程师的工作职责主要包括以下几个方面: 1. 数据管理策略制定:制定和实施数据管理策略&#…

【HCIE】VXLAN

VXLAN简介 介绍VXLAN的定义、目的和收益。 定义 RFC7348定义了VLAN扩展方案VXLAN(Virtual eXtensible Local Area Network)。VXLAN采用MAC in UDP(User Datagram Protocol)封装方式,是NVO3(Network Virt…

YashanDB向量化执行引擎如何给海量数据分析提速

作者介绍:李伟超,数据库系统架构师,YashanDB架设技术开发负责人,10年以上数据库内核技术开发经验。 *全文4510个字,阅读时长约11分钟。 背景 海量数据OLAP场景,通常具有数据规模大、查询复杂度高、处理速…

【ESP-IDF篇】搭建ESP-IDF软件开发环境,包括手动命令行和VSCode两种方式

忘记过去,超越自己 ❤️ 博客主页 单片机菜鸟哥,一个野生非专业硬件IOT爱好者 ❤️❤️ 本篇创建记录 2023-09-27 ❤️❤️ 本篇更新记录 2023-09-27 ❤️🎉 欢迎关注 🔎点赞 👍收藏 ⭐️留言📝&#x1f64…

三相无感正弦波 BLDC 驱动MS39539/MS39535

产品简述 MS39539 和 MS39535 是无感三相直流电机驱动芯片,采用 正弦波驱动方式,具有低噪声及低震动的特点。 MS39539 和 MS39535 特别针对电机启动进行了优化,相比 MS39549 和 MS39545 适用于反向电动势更小的电机。 有一个速…

《数据结构、算法与应用C++语言描述》-栈的应用-列车车厢重排问题

列车车厢重排问题 一列货运列车有 n 节车厢,每节车厢要停靠在不同的车站。假设 n个车站从 1 到n 编号,而且货运列车按照从n到1的顺序经过车站。车厢的编号与它们要停靠的车站编号相同。为了便于从列车上卸掉相应的车厢,必须按照从前至后、从…

c语言练习68:文件的随机读写

文件的随机读写 fseek fseek 根据⽂件指针的位置和偏移量来定位⽂件指针。 1 int fseek ( FILE * stream, long int offset, int origin ); 例子&#xff1a; /* fseek example */ #include <stdio.h> int main () {FILE * pFile;pFile fopen ( "example.txt&…

接口测试的总结文档

接口测试的总结文档 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1a;主要介绍为什…

Java流的体系结构(一)

文章目录 一、文件读写操作FileReader和FileWriter1.main()2.FileReader1.说明&#xff1a;2.代码案例 3.对read()操作升级&#xff1a;使用read的重载方法4.FileWriter的使用1.说明2.代码 4.FileReader和FileWriter综合使用 二、使用步骤1.引入库 二、测试FileInputStream和Fi…

新型信息基础设施IP追溯:保护隐私与网络安全的平衡

随着信息技术的飞速发展&#xff0c;新型信息基础设施在全球范围内日益普及&#xff0c;互联网已经成为我们社会和经济生活中不可或缺的一部分。然而&#xff0c;随着网络使用的增加&#xff0c;隐私和网络安全问题也引发了广泛关注。在这个背景下&#xff0c;IP&#xff08;In…

XML文件反序列化读取

原始XML文件 <?xml version"1.0" encoding"utf-8" ?> <School headmaster"王校长"><Grade grade"12" teacher"张老师"><Student name"小米" age"18"/><Student name&quo…

26048-2010 易切削铜合金线材 学习记录

声明 本文是学习GB-T 26048-2010 易切削铜合金线材. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了易切削铜合金线材的产品分类、技术要求、试验方法、检验规则及标志、包装、运输、贮 存和合同(或订货单)内容等。 本标准适用…

国庆中秋特辑(四)MySQL如何性能调优?上篇

MySQL 性能优化是一项关键的任务&#xff0c;可以提高数据库的运行速度和效率。以下是一些优化方法&#xff0c;包括具体代码和详细优化方案。 接下来详细介绍&#xff0c;共有10点&#xff0c;先介绍5点&#xff0c;下次再介绍其他5点 1. 优化 SQL 语句 1.1 创建索引 创建…

【Axure高保真原型】3D圆柱图_中继器版

今天和大家分享3D圆柱图_中继器版的原型模板&#xff0c;图表在中继器表格里填写具体的数据&#xff0c;调整坐标系后&#xff0c;就可以根据表格数据自动生成对应高度的圆柱图&#xff0c;鼠标移入时&#xff0c;可以查看对应圆柱体的数据……具体效果可以打开下方原型地址体验…

了解汽车ecu组成

常用ecu框架组成&#xff1a; BCM(body control module)-车身控制模块: 如英飞凌tc265芯片&#xff1a; 车身控制单元&#xff08;BCM&#xff09;适合应用于12V和24V两种电压工作环境&#xff0c;可用于轿车、大客车和商用车的车身控制。输入模块通过采集电路采集各路开关量和…

SAP和APS系统订单BOM核对(SAP配置BOM攻略九)

配置订单BOM因为要考虑历史ECN、特征语法、BOM语法&#xff0c;是最复杂的一个算法结果&#xff0c;为了摆脱这种被动的场景&#xff0c;博主开发了一个被动核对数据的程序来保障数据质量。 今天是APS系统上线的第三天&#xff0c;我们的核对程序在昨天上线&#xff0c;面对大量…

nvm及node安装与配置

一、nvm安装 nvm&#xff08;Node Version Manager&#xff09;是一个用来管理node版本的工具。我们之所以需要使用node&#xff0c;是因为我们需要使用node中的npm(Node Package Manager)&#xff0c;使用npm的目的是为了能够方便的管理一些前端开发的包&#xff01;nvm的安装…

【Vue】数据表格增删改查与表单验证

目录 一、CRUD实现 1.1 后台CRUD编写 1.2 配置访问路径 1.3 前端编写&#xff08;及窗口&#xff09; 1.4 增删改查实现 1.4.1 新增示例 1.4.2 修改示例 1.4.3 删除示例 二、表单验证 2.1 设置表单验证属性 2.2 自定义验证规则 2.3 使用规则 2.4 效果演示 一、CRU…