当前位置: 首页 > news >正文

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

导航

      • 一. 垃圾收集算法详解
        • 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. 标记-清除算法

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

相关文章:

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

导航 一. 垃圾收集算法详解1. 分代收集算法2. 标记-复制算法3. 标记-清除算法4. 标记-整理算法二. 垃圾收集器详解1. Serial收集器2. Parallel Scavenge收集器3. ParNew收集器4. CMS收集器三. 垃圾收集底层三色标记算法实现原理1. 垃圾收集底层使用三色标记算法的原因?2. 垃圾…...

STM32复习笔记(四):独立看门狗IWDG

目录 (一)简介 (二)CUBEMX工程配置 (三)相关函数 总结: (一)简介 独立看门狗本质是一种定时器,其作用是监视系统的运行,当系统发生错误&…...

SpringBoot中常用注解的含义

一、方法参数注解 1. PathVariable 通过RequestMapping注解中的 { } 占位符来标识URL中的变量部分 在控制器中的处理方法的形参中使用PathVariable注解去获取RequestMapping中 { } 中传进来的值,并绑定到处理方法定一的形参上。 //请求路径:http://3333…...

学位论文的写作方法,较好的参考文章

摘要 结合2个文章: [1]程鑫. 网联环境下交通状态预测与诱导技术研究[D]. 长安大学, 2017. [2]吴昊. 关中平原水资源变化特征与干旱脆弱性研究[D]. 长安大学, 2018. 主要研究内容及技术路线 各章小结和引言的写作 [1]程鑫. 网联环境下交通状态预测与诱导技术…...

基于SpringBoot的科研工作量获奖项目管理平台设计与实现(源码+lw+部署文档+讲解等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序(小蔡coding)有保障的售后福利 代码参考源码获取 前言 💗博主介绍:✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…...

嵌入式Linux应用开发-驱动大全-第一章同步与互斥④

嵌入式Linux应用开发-驱动大全-第一章同步与互斥④ 第一章 同步与互斥④1.5 自旋锁spinlock的实现1.5.1 自旋锁的内核结构体1.5.2 spinlock在UP系统中的实现1.5.3 spinlock在SMP系统中的实现 1.6 信号量semaphore的实现1.6.1 semaphore的内核结构体1.6.2 down函数的实现1.6.3 u…...

算法-数学-斜率-直线上最多的点数

算法-数学-斜率-直线上最多的点数 1 题目概述 1.1 题目出处 https://leetcode.cn/problems/max-points-on-a-line/ 1.2 题目描述 给你一个数组 points ,其中 points[i] [xi, yi] 表示 X-Y 平面上的一个点。求最多有多少个点在同一条直线上。 2 暴力搜索斜率…...

项目进展(五)-修复PCB电路板,学习32位ADC芯片ADS1285

一、前言 上个月29号放假了,和朋友一起去了南京(人是真滴多),师兄晚放假几天,结果在测试时不小心把12V和GND碰触到一起了,导致12V短路,电路板几乎瘫痪了。 今天下午到学校之后就开始着手寻找问题和修复,最…...

(三) Markdown插入互联网或本地视频解决方案

前言 不论博客系统是WordPress还是Typecho,绕不开的是两种书写语言,一种称之为富文本,一种叫做Markdown。 Markdown有很多好处,也有很多坏处,比如Markdown本身不具备段落居中的功能,以及Markdown也不具有…...

HPA (Horizontal Pod Autoscaler) In K8s

城市红绿灯智能调节 没准正在建设中哈哈哈 作为一位城市观察者和设计师,我想借助Kubernetes的HPA机制思想来描述城市红绿灯自动调节的场景。 在这个故事中,我们的城市面临着日益增长的交通流量和挤塞问题。为了应对这一挑战,城市决定引入智能…...

Ubuntu安装samba服务器

为了window系统下能够像访问本地目录一样访问ubuntu系统下的目录,这里我通过安装samba服务器,将ubuntu系统的文件目录通过网络挂载的方式共享出来,以便在window下就能够对ubuntu系统的文件进行读写等访问操作,这里记录一下samba服…...

[SpringBoot] 8. aop 获取 request response

最近开发有一个需求需要在 aop 中获取request response ,搜索许久没有答案,故此记录📝~ aop 获取 package com.example.easy_im.aop;import com.example.easy_im.Context; import jakarta.servlet.http.HttpServletRequest; impo…...

同学苹果ios的ipa文件应用企业代签选择签名商看看这篇文章你再去吧

同学我们要知道随着互联网的发展,苹果应用市场的火爆,越来越多的开发者加入到苹果应用开发行业中来。同时,苹果应用市场上的应用也在不断增多,用户数量也在不断增加,苹果应用代签是指通过第三方公司为开发者的应用进行…...

【PyCharm Community Edition】:excel操作

Excel操作 相关模块openpyxlxlrdshutil 实例 相关模块 openpyxl 可以对.xlsx,.xlsm,.xltx,.xltm文件格式操作 打开文件:wb_xlsx openpyxl.load_workbook(“文件名”)新建文件:wb_xlsx openpyxl.Workbook()新建sheet表:wb_xlsx_sheet wb…...

证书显示未受信任,生成的证书过期

此时若是导入证书后,证书显示未受信任,则说明我们缺失最新的AppleWWDRCA证书 解决方案: 重新下载AppleWWDRCA并安装。即下载最新的AppleWWDRCA证书,双击安装到“登录”项的钥匙串下;然后再安装你的开发证书或者发布证书…...

VS+Qt+C++ GDAL读取tif图像数据显示

程序示例精选 VSQtC GDAL读取tif图像数据显示 如需安装运行环境或远程调试,见文章底部个人QQ名片,由专业技术人员远程协助! 前言 这篇博客针对《VSQtC GDAL读取tif图像数据显示》编写代码,代码整洁,规则,…...

CSS 选择器-认识并应用选择器

CSS选择器是用来定位HTML或XML文档中的元素的模式。以下是一些常见的CSS选择器,以及对应的样例代码: 标签选择器:选择所有指定标签的元素。 示例代码: p {font-size: 16px; }类选择器:选择所有指定类名的元素。 示…...

【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 此代码可以替代内置的images.findImage函数使用,但可能会误匹配,如果是对匹配结果要求比较高的,还是得谨慎使用。 runtime.images.initOpenCvIfNeeded(); importClass(java.uti…...

[庆国庆 迎国庆 发文]云计算的概念

庆国庆 迎国庆 国庆发文100%可得专属勋章 一年仅有一次哦 不要错过啦 去发布 https://activity.csdn.net/creatActivity?id10567&spm1011.2480.3001.6900 https://mp.csdn.net/edit?activity_id10567&spm1057.2600.3001.9674 云计算(cloud computing&…...

计算机网络-计算机网络体系结构-概述,模型

目录 一、计算机网络概述 二、性能指标 速率 带宽 吞吐量 时延 往返时延RTT 利用率 三、计算机网络体系结构 分层结构 IOS模型 应用层-> 表示层-> 会话层-> 传输层-> 网络层-> 数据链路层-> 物理层-> TCP/IP模型 一、计算机网络概述 计…...

实用教程!用fft npainting lama镜像批量处理图片水印

实用教程!用fft npainting lama镜像批量处理图片水印 1. 引言 1.1 为什么需要批量水印处理 在日常工作中,我们经常遇到需要处理大量带有水印图片的情况。无论是电商平台的商品图、社交媒体上的素材,还是企业内部文档,水印的存在…...

知识管理新范式:跨平台无缝迁移与团队协作效能提升指南

知识管理新范式:跨平台无缝迁移与团队协作效能提升指南 【免费下载链接】outline Outline 是一个基于 React 和 Node.js 打造的快速、协作式团队知识库。它可以让团队方便地存储和管理知识信息。你可以直接使用其托管版本,也可以自己运行或参与开发。源项…...

动态规划详解:从入门到精通,这四个案例让你彻底掌握DP思想

面试必考、算法进阶的核心,一篇文章帮你打通任督二脉在算法学习的过程中,动态规划(Dynamic Programming,简称DP)绝对是让很多人头疼的一个难点。很多初学者看到DP问题就发怵,其实只要掌握了核心思想&#x…...

Wan2.2-I2V-A14B企业落地:汽车4S店车型介绍短视频自动化生产系统

Wan2.2-I2V-A14B企业落地:汽车4S店车型介绍短视频自动化生产系统 1. 项目背景与需求分析 汽车4S店每天需要为不同车型制作大量介绍视频,传统视频制作方式面临三大痛点: 人力成本高:专业视频团队制作单条视频成本约2000-5000元制…...

Java全栈开发面试实战:从基础到进阶的深度解析

Java全栈开发面试实战:从基础到进阶的深度解析 面试官与应聘者的对话 面试官(李明):你好,我是李明,负责这次技术面试。很高兴见到你,先简单介绍一下你自己吧。 应聘者(张晨&#xff…...

OpenClaw多终端访问:远程控制GLM-4.7-Flash助手方案

OpenClaw多终端访问:远程控制GLM-4.7-Flash助手方案 1. 为什么需要远程访问OpenClaw? 去年冬天的一个深夜,我正在外地出差,突然接到同事紧急需求——需要从公司内网服务器提取一份关键数据报告。当时我的OpenClaw助手部署在家里…...

Sodaq_RN2483库详解:LoRaWAN Class A终端嵌入式实现

1. Sodaq_RN2483库深度解析:面向Class A LoRaWAN终端的嵌入式通信实现 1.1 库定位与工程价值 Sodaq_RN2483是一个专为Microchip RN2483 LoRaWAN模块设计的Arduino兼容C库,其核心目标是为资源受限的嵌入式系统提供稳定、可复用、符合LoRaWAN协议规范的无…...

【开源鸿蒙Flutter跨平台开发实战复盘】从零到一:GitCode口袋工具项目构建全记录

1. 环境搭建:从零开始的跨平台开发之旅 作为一个有Android开发背景但完全没接触过Flutter的开发者,我最初面对开源鸿蒙和Flutter跨平台开发时也是一头雾水。环境搭建这个看似简单的第一步,就让我深刻体会到"万事开头难"的含义。 在…...

OpenClaw异常处理:配置nanobot自动重试失败任务

OpenClaw异常处理:配置nanobot自动重试失败任务 1. 为什么需要自动重试机制 上周我让OpenClaw执行一个简单的夜间数据收集任务时,遇到了一个令人头疼的问题。凌晨3点,网络突然波动导致任务中断,而当我早上打开电脑时&#xff0c…...

Phi-4-Reasoning-Vision部署案例:中小企业AI视觉分析私有化部署

Phi-4-Reasoning-Vision部署案例:中小企业AI视觉分析私有化部署 1. 项目背景与价值 在中小企业数字化转型过程中,AI视觉分析技术正成为提升运营效率的关键工具。传统方案往往面临两大痛点:一是商业API调用成本高且数据隐私难保障&#xff1…...