垃圾回收算法

目录

标记-清除算法

标记阶段

清除阶段

复制算法

标记-整理算法

标记阶段

整理阶段


标记-清除算法

分为标记阶段和清除阶段

标记阶段

遍历所有的 GCRoots 标记所有存活对象

清除阶段

清除所有未被标记的对象,清除后内存不连续,产生内存碎片,需要维护空闲列表,在分配大对象或者大数组对象时,可能没有连续的内存空间进行存放

复制算法

将内存分为两块,同一时刻只使用其中的一块内存,垃圾收集时,将存活对象复制到另一块区域,然后将垃圾对象统一清理。会浪费一部分内存,适用于对象存活率较低的场景

标记-整理算法

分为标记阶段和整理阶段

标记阶段

同样的,遍历所有 GCRoots 标记所有存活对象

整理阶段

把存活对象移动到内存的一端,然后对存活对象边界之外的内存进行统一回收。适用于垃圾收集次数不频繁,对象存活率较高的场景

相关推荐
Java成神之路-5 小时前
深入理解 G1 Mixed GC:触发条件、完整流程与高频误区
jvm·g1垃圾回收算法
认真的小羽❅6 小时前
ThreadLocal 在虚拟线程间要小心
java·开发语言·jvm
今天的砖头有点烫手啊7 小时前
Java 8 Stream 原理拆解:惰性求值与并行流陷阱
java·jvm
用户094248568038 小时前
第37章:JVM极端场景调优与生产故障复盘方法论
java·jvm
南极企鹅9 小时前
生产环境gc文件分析
java·jvm·算法
欣栀♡19 小时前
JVM 频繁 Full GC 先看日志括号里的 cause,jstat 的 FGC 在 JDK 8 上会骗人
java·jvm
czt_java20 小时前
JVM 核心基础|运行时数据区、类加载机制、GC 分代回收
jvm
Web极客码1 天前
Python Ollama 本地 Agent 入门与订单查询实践
开发语言·jvm·python
y = xⁿ1 天前
一文掌握JVM
jvm
顺风尿一寸1 天前
从 FileOutputStream 到 int fd:一次 JNI 字段读写全链路源码剖析
linux·jvm