Java虚拟机学习之GC算法

jvm主要的gc算法有:标记-清除(Mark-Sweep)、复制(Copying)、标记-整理(Mark-Compact)和分代收集(Generational Collection)

1. 标记-清除(Mark-Sweep)

算法原理介绍:首先标记处所有需要回收的对象,等待标记完成之后一次性将全部标记对象回收

示意图:

缺点:效率不高、空间问题(这个算法会产生很多不连续的内存碎片)

2. 复制(Copying)

算法原理介绍:将内存分为大小相等的两块,每次只使用其中的一块。当这一块内存用完时,将还存活的对象复制到另外一块内存中,再一次性将原本的这块内存处理掉。

示意图:

缺点:内存利用率不高

3. 标记-整理(Mark-Compact)

算法原理介绍:首先将所有需要清除的对象标记出来,然后让所有存活的对象都向内存的一端移动,保证内存的连续性,最后将边界以外的内存全部清理掉。

示意图:

4. 分代收集(Generational Collection)

这个算法并不是一种新的算法,而是将内存根据对象存活周期分为几块(一般分为新生代和老年代),再根据不同的区域采用以上收集算法。

在新生代中,每次都会有大量的对象死去,只有少量的对象存活,对象复制的成本较低,就采用复制算法。

在老年代中,对象普遍存活率高,使用标记-清除或者标记-整理算法。

just keep real!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值