详解gc(垃圾回收)机制四:GC标记-清除算法

简介: 详解gc(垃圾回收)机制四:GC标记-清除算法

标记-清除算法

GC标记-压缩算法由标记阶段和清除阶段构成

我们在详解gc(垃圾回收)机制(一)   简单说明了 标记-清除算法

gc步骤:

1:暂停程序业务逻辑,对所有对象进行标记分类

2:找出程序可达对象和不可达对象

3:删除不可达对象

标记清除算法就是如此简单明了,不会出现循环引用的问题,

但是标记清除算法需要暂停程序,会造成程序卡顿

同时每次标记都需要扫描整个堆内存空间

步骤一:遍历根引用的对象:

image.png

步骤二:将已经引用的对象打上标记

image.png

步骤三:遍历引用对象的子对象,继续打上标记

image.png

步骤四:遍历整个堆,将堆上没有标记的对象清除:

image.png

优点

1:算法简单

缺点

1:碎片化

可以看出,在gc之后,每个空闲的堆空间都是不连续的,大大小小,在之后分配内存可能会出现大内存对象无法分配到有效堆空间的问题

2:分配速度慢

因为内存分块不是连续的,所以每次分配新的内存,都需要遍历整个空闲链表,找到适合内存对象的内存块

3:与写时复制技术不兼容

因为在gc标记阶段时,也会改动所有的活动对象的标记,导致触发了"写时复制",从而变成了不管有没有重写对象,都会触发写时复制.

该缺点可以通过一个新的活动对象(位图结构),将活动对象对应上,在标记时,只在新活动对象改动,而不改动活动对象

目录
相关文章
|
3月前
|
算法 Java
JVM GC和常见垃圾回收算法
JVM GC和常见垃圾回收算法
46 0
|
3月前
|
存储 算法 Java
理解JVM的内存模型和垃圾回收算法
理解JVM的内存模型和垃圾回收算法
40 2
|
1月前
|
机器学习/深度学习 数据采集 算法
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
解码癌症预测的密码:可解释性机器学习算法SHAP揭示XGBoost模型的预测机制
83 0
|
7天前
|
存储 缓存 算法
深度解析JVM世界:垃圾判断和垃圾回收算法
深度解析JVM世界:垃圾判断和垃圾回收算法
|
27天前
|
Java 程序员 编译器
【C/C++析构函数 】C++中的“垃圾回收”机制_析构
【C/C++析构函数 】C++中的“垃圾回收”机制_析构
29 0
|
1月前
|
算法 Java UED
【JVM】分代收集算法:提升Java垃圾回收效率
【JVM】分代收集算法:提升Java垃圾回收效率
16 0
|
1月前
|
算法 Java
深入了解JVM和垃圾回收算法
深入了解JVM和垃圾回收算法
24 0
|
2月前
|
算法 安全 Java
「译文」Java 垃圾收集参考手册(三):GC 算法基础篇
「译文」Java 垃圾收集参考手册(三):GC 算法基础篇
|
2月前
|
算法 Java
「译文」Java 垃圾收集参考手册(八):GC 算法总结
「译文」Java 垃圾收集参考手册(八):GC 算法总结
|
3月前
|
机器学习/深度学习 算法
YOLOv8改进算法之添加CA注意力机制
CA(Coordinate Attention)注意力机制是一种用于加强深度学习模型对输入数据的空间结构理解的注意力机制。CA 注意力机制的核心思想是引入坐标信息,以便模型可以更好地理解不同位置之间的关系
194 0