JVM垃圾回收算法

本文介绍了JVM的四种垃圾回收算法:标记清除、标记复制、标记整理和分代收集。标记清除算法效率慢且产生内存碎片;标记复制算法解决效率问题但浪费空间;标记整理算法减少碎片但有额外开销;分代收集根据新生代和老年代的特点采用不同算法,新生代使用复制算法,老年代使用标记整理算法。
摘要由CSDN通过智能技术生成

常见的垃圾回收算法有四种:

标记清除算法

标记复制算法

标记整理算法

分代收集算法

一.标记清除算法

分为标记和清除阶段。先标记出所有不需要回收的对象,在标记完成后统一回收所有没有被标记的对象。标记清除算法是最基础的垃圾回收算法,后续的算法都是针对它的不足改进而来。

标记清除算法的弊端:

清除垃圾的效率慢:如果Java堆中包含大量对象,而其中大部分需要被回收,这时会进行大量的标记和清除,导致标记和清除的执行效率随着对象数量的增长而降低。

会产生内存碎片:标记清除后会产生不连续的内存碎片(可用的内存地址不连续),空间碎片太多可能导致程序需要分配较大对象时无法找到足够的连续内存而不得不提前触发另一次垃圾回收。

二.标记复制算法

标记复制算法解决了标记清除算法中的效率问题。它将内存分为大小相同的两块,每次使用其中的一块。当其中一块的内存使用完,就将存活的对象复制到另一块中,然后再把使用的空间一次清理。这样每次的内存回收都是对内存区间的一半进行回收。

标记复制算法的弊端:

将可用的内存缩小为原来的一半,造成空间浪费。

如果内存中多数对象是存活的,会产生大量的复制内存空间产生的开销。

三.标记整理算法

标记整理算法和标记清除算法的标记过程一样,但是标记整理算法是让所有存活的对象都向内存一端移动,然后直接清理边界以外的内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

psvm_code

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值