Jvm-垃圾回收算法

  • 标记-整理算法:

  • 标记- 清除:

    • 首先标记出所有需要回收的对象 在标记完成后,统一回收掉所有被标记的对象 也可以反过来,标记存活的对象,统一回收所有未被标记的对象。

    • 执行效率不稳定

    • 内存空间碎片化问题,标记、清除之后会产生大量不连续的内存碎片,

  • 标记-复制算法:

    • 它将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。

      当这一块的内存用完了,就将还存活着 的对象复制到另外一块上面,

      然后再把已使用过的内存空间一次清理掉。

    • 优点

      • 实现简单,高效 - 没有空间碎片

    • 缺点

      • 空间利用率比较低,可用内存缩小为了原来的一半

    • 复制算法能不能调成9:0.5:0.5或者调成9:1:1

  • 活的少-死的多 ,优化8:1:1

    • Eden区:from Survivor:To Survivor 1不够的话进行,空间分配担保

  • 空间分配担保

    • 目的:空间分配担保是为了确保在 Minor GC 之前老年代本身还有容纳新生代所有对象的剩余空间。

    • 空间分配担保是为了确保在 Minor GC 之前老年代本身还有容纳新生代所有对象的剩余空间。

    • 在发生Minor GC之前,虚拟机会先检查年老代最大可用的连续空间是否大于新生代所有对象的总空间,如果条件成立,那么Minor GC可以确保是安全的。

      如果不成立,则虚拟机会查看HandlePromotionFailure设置值是否允许担保失败。

      如果允许,那么会继续检查年老代最大可用连续空间是否大于历次晋升到年老代对象的平均大小,

      如果大于,将尝试进行一次Minor GC,尽管这次Minor GC是有风险的。

      如果小于,或者HandlePromotionFailure设置不允许冒险,那这时候改为进行一次Full GC。

    • 新生代GC的时候 检查老年代剩余空间是否大于新生代的总和,如果大于将尝试进行一次Minor GC,尽管这次Minor GC是有风险的。

      • 如果小于,或者HandlePromotionFailure设置不允许冒险,那这时候改为进行一次Full GC。

      • image-20210731192409578

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值