【JVM】垃圾收集器理论算法

垃圾收集算法

垃圾收集算法是内存回收的方法理论(理论方法,并未实际实现)

分代收集理论

JVM虚拟机的垃圾收集是采用分代收集算法,根据对象的存活周期的不同将内存分块。java将堆分为新生代和老年代,就可以根据不同年龄的不同特点选择合适的垃圾收集算法。

例如在新生代中,每次mGC都会造成大量的对象回收,只存在少里对象存活,只需要复制算法进行复制到幸存者区。

标记-复制算法

“复制”算法,它将内存分为大小相同的俩块,每次使用其中的一块。当使用的那块内存使用完后,就将还存活的对象复制到另一块,然后将之前使用的那块清理掉。就是每次内存回收都是堆内存中另一块进行回收。

流程

  • 当使用内存块满时,标记存活对象,复制存活对象进入未使用内存块。
  • 清理使用内存块,两个内存块切换使用状态。(循环)
    在这里插入图片描述
    缺点:内存利用率过低,每次只有一半的内存被使用.
标记-清理算法

该算法分为两个阶段:

  • 标记
    • 第一种:标记所有存活对象(一般使用)
    • 第二种:标记所有需要回收对象
  • 清除
    • 第一种:回收所有未被标记的对象(一般使用)
    • 第二种:回收所有被被标记对象

缺点:

  1. 效率问题(如果需要标记对象过多,效率不高甚至低)
  2. 空间问题(标记清除后产生大量不连续的碎片,即不连续的内存)

在这里插入图片描述

标记-整理算法

该算法就是解决不连续内存的算法,该对象不是针对内存回收,而是对内存进整理的,它将所有存活的对象向一端移动,然后清理对象边界以外的内存。

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

嘿嘿嘿1212

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

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

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

打赏作者

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

抵扣说明:

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

余额充值