Java 垃圾回收算法

本文介绍了五种主要的垃圾回收算法,包括标记-清除、标记-整理、复制、分代收集及G1垃圾收集器的特点与应用场景。这些算法解决了内存管理中的关键问题,如内存碎片和收集效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、标记-清除

标记:从根对象开始遍历所有对象并标记,遍历完成的时候,未被标记的对象就是垃圾对象。

清除:从内存中删除未被标记的对象。

这种算法简单,但是效率比较低,又会产生内存碎片。

2、标记-整理

标记:从根对象开始遍历所有对象并标记,遍历完成的时候,未被标记的对象就是垃圾对象。

整理:将被标记的对象压缩到一块内存区域,然后清理内存边界到该区域的其他空间。

这种算法主要是为了解决标记-清除带来的内存碎片的问题。

3、复制

将内存分为两块,每次都只使用其中的一块,当这一块快要耗尽时,将所有正在使用的对象复制到另一块,并将老的一块清除。

这种算法效率高,不产生碎片,但是会浪费大量的空间。

4、分代收集

目前几乎所有的 JVM 垃圾回收机制都采用分代收集的方法,将内存划分为不同的区域如新生代,老年代。在新生代中,对象死去的概率较大,并且有内存空间担保,因此可以使用复制算法回收,效率高。对于老年代,并没有多少内存空间进行担保,因此可以采用标记-清除或者标记-整理算法。

5、G1 垃圾收集器

G1 垃圾收集器算得上是分代收集方法的一种实现。它的特点是吞吐量大,支持很大的堆,支持多线程收集,可根据情况进行并行或者并发收集。G1 垃圾收集器致力于尽量减少垃圾收集对业务的影响。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值