JVM垃圾回收算法

JVM 有哪些垃圾回收算法? JVM垃圾回收算法 标记-清除算法 该算法分为“标记”和“清除”阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有被标记的对象。也可以反过来先标记所有不需要被回收的对象,标记完成以后回收没有被标记的对象。 优缺点: 执行效率不稳定,适用于对象存过较多的区域,适用于老年代会产生内存碎片 何为清除? 标记清除并不是真的置空,而是把需要清除的对象地址保存在空闲的地址列表里。下次有新对象需要加载时,判断垃圾的位置空间是否够,如果够,就存放。 复制算法 将可用内存分为大小... 阅读详情

1.标记清除算法:

在GCRoot链上的对象被标记为存活对象,没被标记的就是非存活对象。

问题:

导致碎片化问题,碎片化又得用链表进行维护,分配速度慢

2.复制算法:

分为from to两个空间。

在GC开始时,原来都是在from ,将GCRoot对象搬运到to,然后引用链上的也搬运到to空间,此时清理from空间,然后from和to名称互换。保证from空间一直都是存对象的地方。

吞吐量高,不会碎片化(按顺序存放对象),内存效率低。

3.标记整理算法

对标记清除算法的扩展,在标记阶段一致,在整理阶段将存活的对象移动至堆的一端,避免了内存碎片。

内存使用率高,不会碎片化,整理阶段效率不高

4.分代GC

把内存分为新生代(存活时间较短的对象)和老年代(存活时间较长的对象)

新创建的对象会放在Eden园区,园区满了以后触发年轻代的GC,叫做MinorGC,只要Eden区满了,就会触发MinorGC。

Eden区和From Survivor区的存活对象会被复制到To Survivor区。

在Minor GC结束后,To Survivor和From Survivor区角色互换,为下一次GC做准备。

在MinorGC中,Eden区的存活对象首先尝试转移到From Survivor区。如果From Survivor区未满,则正常存放。如果From Survivor区满了,存活对象将被直接晋升到老年代(或触发Full GC)。

运用的是复制算法,将from的存活对象转移至to,再清空from,最后from和to交换名称。

每一次MinorGC都是让存活对象的年龄+1,到15的时候晋升老年代

5.Full GC 的触发条件

当对象晋升(Promotion)到老年代时,如果老年代没有足够的空间存放这些对象,会触发 Full GC。

程序显式调用System.gc()可能触发 Full GC。

【JVM 系列】JVM 垃圾回收算法 在进行垃圾回收之前,需要首先进行垃圾定位,知道哪些对象可以进行回收。那么什么样的对象算是可回收对象呢,指的是没有任何引用指向的对象,这些想大家都有了一定的了解,如何还不明白什么是需要回收的垃圾的话,可以看一下前面的两篇文章。... 阅读详情

相关推荐

树上柑橘检测实战:自制数据集与YOLO训练全流程复盘

目标检测模型的性能上限往往由训练数据决定,尤其在农业视觉这样的复杂场景中,公开数据集与真实环境的差异常导致模型漏检、误检频发。高质量的标注数据是模型泛化的基础,从采集、清洗到统一标注规范,每一步都直接影响最终效果。对于检测任务而言,VOC与YOLO两种主流标注格式的转换是工程落地的常见环节,理解坐标归一化原理并做好校验,能有效避免训练事故。在模型训练阶段,合理划分数据集、谨慎选择数据增强策略,并结合切片推理解决小目标漏检,是果园场景下提升精度的关键。这套基于2511张果树图像的单类别检测流程,不仅支撑了柑橘

weixin_29057163的博客 231

【JVM系列详解】jvm垃圾回收机制(中)——垃圾回收算法

垃圾回收是JVM中十分重要的内容,也是面试常考察的点。 本文为垃圾回收系列的中篇,将详细介绍垃圾回收算法。其中重点在于分代垃圾回收算法。

m0_51214238的博客 2228

安卓ai自动化脚本 Yyds.Auto实现 示例 纯ai图像识别自动点击脚本

纯ai识别实现自动化脚本

专注安卓前沿科技 4783

JVM学习《垃圾回收算法和垃圾回收器》

因此就出现了一种标记-整理算法(Mark-Compact)算法,与标记-整理算法不同的是,在标记可回收的对象后将所有存活的对象压缩到内存的一端,使他们紧凑的排列在一起,然后对端边界以外的内存进行回收。重新标记阶段就是为了修正并发标记期间因为用户程序继续运行而导致标记产生变动的那一部分对象的标记记录(主要 是处理漏标问题),这个阶段的停顿时间一般会比初始标记阶段的时间稍长,远远比并发标记阶段时间短。垃圾收集时,遍历当前使用的区域,把存活对象复制到另外一个区域中,最后将当前使用的区域的可回收的对象进行回收。

GQ_666的博客 1631

Excel VBA+Adobe Acrobat Pro PDF发票识别全流程(附避坑指南)

本文详细介绍了如何利用Excel VBA与Adobe Acrobat Pro的API接口,构建一套企业级PDF发票智能识别与处理系统。内容涵盖从环境配置、核心文本提取原理、数据解析清洗到工程化脚本设计的全流程,并针对密码区干扰、不征税发票等常见问题提供避坑指南,旨在帮助财务人员和开发者实现高效、精准的财务数据处理自动化。

weixin_29207439的博客 348

DPABI安装教程

DPABI是是中科院心理研究所严超赣老师团队开发的一款磁共振脑影像数据分析工具包。基于SPM,在安装DPABI之前需要安装好SPM,才能正常使用。SPM的安装方法见文matlab2021a版本条件下安装spm_kidllll的博客-优快云博客 1、下载安装包 下载地址:DPABI: a toolbox for Data Processing & Analysis for Brain Imaging | The R-fMRI Network 2、将下载好的dpabi文件夹移动到matl..

qq_42356925的博客 1万+

JVM之垃圾回收算法详解

JVM之垃圾回收算法详解现有的垃圾回收算法分类垃圾收集器的设计原则标记-清除算法缺点标记-复制算法“Apple回收策略”缺点标记-整理算法缺点总结 现有的垃圾回收算法 分类 根据如何判定对象是垃圾,垃圾回收算法分为两类: 1、引用计数式垃圾收集(判定垃圾是通过引用计数器)别名:直接垃圾收集 2、追踪式垃圾收集(判定垃圾是通过GC Roots)别名:间接垃圾收集 主流虚拟机采用的是第二种追踪式垃圾收集,所以本文讲解第二种垃圾收集的算法 垃圾收集器的设计原则 根据两个分代假说: 1.绝大部分对象是熬不过第一

北洋的博客 4611

如何利用air780e与stm32c8c6进行通信实现给手机发送一条英文短信的功能?

🏆 本文收录于《全栈Bug调优(实战版)》专栏,致力于分享我在项目实战过程中遇到的各类Bug及其原因,并提供切实有效的解决方案。无论你是初学者还是经验丰富的开发者,本文将为你指引出一条更高效的Bug修复之路,助你早日登顶,迈向财富自由的梦想🚀!同时,欢迎大家关注、收藏、订阅本专栏,更多精彩内容正在持续更新中。让我们一起进步,Up!Up!Up!    备注: 部分问题/难题源自互联网,经过精心筛选和整理,结合数位十多年大厂实战经验资深大佬经验总结所得,数条可行方案供所需之人参考。

**My Coding Family** 1237

JVM垃圾回收算法及垃圾回收器

JVM基本垃圾回收算法,按照基本回收策略分 标记-清除(Mark-Sweep) 一、标记-清除(Mark-Sweep) https://www.html.cn/qa/other/22924.html 此算法执行分两阶段。 第一阶段 标记:遍历内存区域,对需要回收的对象打上标记。 第二阶段 清除:再次遍历内存,对已经标记过的内存进行回收。 此算法需要暂停整个应用 绿色、蓝色---代表存活对象 灰色---非存活对象 白色--未使用的内存 缺点: 效率问题:遍历了两次内存空间(

喵酱 2957

SolidWorks软件二次开发:使用C#进行SolidWorks二次开发

SolidWorks 提供的 API(应用程序编程接口)允许开发者使用多种编程语言(如 C#、VB.NET 等)来控制和扩展 SolidWorks 的功能。API 架构基于 COM(组件对象模型),这意味着开发者可以通过引用 SolidWorks 的类型库来访问其对象模型。SolidWorks 的对象模型包括了从文档、零件、装配体到特征、草图等所有 SolidWorks 中可操作的对象。

kkchenjj的博客 3215

Codex入门10-Goal自主任务(进阶必学:设定目标就不管了,AI自己干活到完成)

/goal 是Codex CLI最强大的进阶功能——设定一个目标,AI就会制定计划、分步执行、自我测试、持续迭代,即使你关掉终端也会继续。本文详解/goal的工作原理、配置启用方法、常用命令(pause/resume/status/clear),以及如何写出高质量的目标描述让AI高效自主完成任务。

yueyeguzhuo的专栏 455

JVM 垃圾回收算法

JVM的4种垃圾回收算法、垃圾回收机制与总结 1.标记清除 标记-清除算法将垃圾回收分为两个阶段:标记阶段和清除阶段。 在标记阶段首先通过根节点(GC Roots),标记所有从根节点开始的对象,未被标记的对象就是未被引用的垃圾对象。然后,在清除阶段,清除所有未被标记的对象。 image 适用场合: 存活对象较多的情况下比较高效 适用于年老代(即旧生代) 缺点: 容易产生内存碎片,...

AI天才研究院 1万+

Android16 自定义HAL层适配一些VINTF和SELINUX问题修改

在RK里面一般权限矩阵在/rockchip/common/manifests/目录,我这版Android16的代码比较特殊,这里重点修改/device/rockchip/rockchip_generic/manifests/frameworks_compatibility_matrix.xml这个文件,不同的版本注册方式不同,在。hal_ruip_default.te,hal_ruip.te,attributes文件。拓展策略的方式添加,但是在Android16里面发现用不了。发现HAL层服务注册成功了。

tzj1058756809的博客 243

一文看懂:JVM垃圾回收算法、CMS垃圾回收器、G1垃圾回收器

Hello,大家好,我是此林。今天我们来聊一聊 JVM 垃圾回收机制。在C/C++这类没有自动垃圾回收机制的语言中,一个对象如果不再使用,需要手动释放,否则就会出现内存泄漏。内存泄漏指的是不再使用的对象在系统中未被回收,内存泄漏的积累可能会导致内存溢出。手动回收的方式相对来说回收比较及时,删除代码执行之后对象就被回收了,可以快速释放内存。缺点是对程序员要求比较高,很容易出现创建完对象之后,程序员忘记释放对象。

2401_82540083的博客 2512

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JVM 垃圾回收之垃圾回收算法

JVM 垃圾回收算法之判别阶段的两个算法

qq_74212030的博客 1508

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

【JVM】垃圾回收机制、算法以及垃圾回收器

本文系统介绍了JVM垃圾回收机制,主要内容包括:1)触发GC的三种情况;2)垃圾回收机制中的对象晋升策略、大对象处理及可达性分析方法;3)三种核心垃圾回收算法(标记-清除、复制、标记-整理)的原理与特点;4)四种主流垃圾回收器(Serial、Parallel、CMS、G1)的工作原理和适用场景。重点分析了CMS的并发标记流程和G1的分区回收机制,比较了各回收器在STW、吞吐量和内存管理方面的差异,为JVM调优提供了理论基础。

qq_53182263的博客 3142

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

JVM有哪些垃圾回收算法?

在 JVM 中,垃圾回收算法是垃圾回收器(Garbage Collector, GC)的核心组成部分,用于识别和回收不再使用的对象。JVM 提供了多种垃圾回收算法,包括标记-清除、标记-整理、复制算法、分代收集、增量收集、并发标记清除和 G1 算法,每种算法适用于不同的场景和需求。在标记阶段跟标记清除算法是⼀样的,但是在完成标记之后,不是直接清理垃圾内存,⽽是将存活对象 往⼀端移动,然后将端边界以外的所有内存直接清除。根据对象的生命周期采用不同的回收策略,提高了垃圾回收的效率。

完全体 995

【面试必备】JVM垃圾回收算法

CMS会产生浮动垃圾 CMS产生浮动垃圾过多时会退化为serial old,效率低,因为在上图的第四阶段,CMS清除垃圾时是并发清除的,这个时候,垃圾回收线程和用户线程同时工作会产生浮动垃圾,也就意味着CMS垃圾回收器必须预留一部分内存空间用于存放浮动垃圾 而G1没有浮动垃圾,G1的筛选回收是多个垃圾回收线程并行gc的,没有浮动垃圾的回收,在执行‘并发清理’步骤时,用户线程也会同时产生一部分可回收对象,但是这部分可回收对象只能在下次执行清理是才会被回收。新生代并行收集器,追求高吞吐量,高效利用 CPU。

m0_67740632的博客 1562

jvm之垃圾回收算法

垃圾回收算法 哪些内存需要回收 jvm的内存模型中将内存划分为程序计数器、虚拟机栈、本地方法栈、堆、方法区。 其中程序计数器、虚拟机栈、本地方法栈属于线程私有的内存空间,与线程的生命周期保持一致,不需要手动回收内存。 方法区中存放的是类的结构信息,对方法区的回收其实就是对类进行卸载,类的卸载必须满足以下三个条件: 类的实例及其子类实例已经全部被回收 加载类的类加载器已经被回收,通常加载类的加载器是用来加载应用中所有的类的,所以一般不会被回收。 类的Class对象没有被其他对象所引用 基于以上三点,方法区

morris 1万+

jvm垃圾回收算法和垃圾回收器

垃圾回收算法 jvm垃圾回收算法包括复制算法、标记清楚算法和标记整理算法,它们都基于分代收集理论。所谓分代收集理论,可以理解为jvm根据对象的生命年龄将他们分在不同的内存模块,也就是熟知的新生代和老年代。由于新生代存储的对象大部分都是朝生夕死的对象,一般使用复制算法,只需要付出少量的复制成本就能满足了。而老年代的对象生命周期都比较长,一般会选择标记-清楚或者标记-整理算法。复制算法是比其他两种算法快10倍以上的。 标记-复制算法 复制算法是将内存区域划分为两个模块,如下图,在内存被整理前,左边的内存区

weixin_36279234的博客 1120

JVM虚拟机(三)垃圾回收算法、分代回收、垃圾回收器种类、G1垃圾回收器

JVM虚拟机(三)垃圾回收算法、分代回收、垃圾回收器种类、G1垃圾回收器

ACGkaka的博客 1979

常见垃圾回收算法、垃圾回收器及 JVM 调优

【代码】常见垃圾回收算法、垃圾回收器及 JVM 调优。

csdn_tom_168的博客 1157

JVM GC垃圾回收算法

jvm垃圾回收算法、安全点机制、oopmap、可达性算法、三色标记

hello world 1590
上一篇: JDK、CGLIB动态代理
下一篇: mysql为什么用B+树,不用B树和hash
format_push
博客等级 码龄4年 104粉丝 80原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值