JVM垃圾回收算法(整理笔记)

JVM垃圾回收算法

  1. 标记清除(已废除)
  2. 标记整理(老年代)
  3. 标记复制(青年代)

标记清除:用GC Root 标记出仍在使用的对象在下次回收时将未标记的内存进行清除。(具体如下)

1.首先标记出正在使用的对象内存(带线条的意为标记)
在这里插入图片描述
2.GC ROOT进行垃圾回收(清理后的内存情况)
在这里插入图片描述
总结:由于这种清理的方式过于简单粗暴所有带来的优缺点是很明显的,不需要复杂的逻辑从而效率就是会高,但缺点就是产生的内存碎片过多,导致二次利用时如果再进来的对象内存占用过大就不利于将释放后的内存充分使用。

标记整理:基于标记清除之上,将清除后的结果进行整理,整理将存活的数据向一边靠拢。

1.因为是基于标记清除之上,所以处理的方式是有所改进的,第一步也是先进行标记。
在这里插入图片描述
2.将存活下来的内容进行向一侧靠拢。
在这里插入图片描述
在这里插入图片描述
总结:由此可见这种处理的方法能够大大的解决内存碎片过多的问题,也大大的将清理后的内存充分的利用起来,但缺点也很明显,因为多了整理的过程所以效率太低、工作量稍大,这可能也就是full gc触发会有卡顿的原因吧。

标记复制:将内存区域划,分别两块。

1.将内存区域划分为两块,在第一次清除操作前把存活的数据复制到另一个内存区域中。
在这里插入图片描述
2.复制结束后最终释放所有内存。
在这里插入图片描述
总结:同样有点也是解决了内存碎片的问题,同时复制的过程还是比较简单的所以效率相比标记整理是要快的,但是同样也有缺点,因为将内存分为两块的原因所以还是比较占用内存的。

以上就是自行整理的关于垃圾回收算法的笔记,当然有些地方可能形容的有误差也是希望多多包容,详情的话可以看看黑马老师专课讲解。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值