GC常用算法

GC常用算法

提示:java垃圾回收机制常用的算法


引用计数法:

在这里插入图片描述

原理:利用计数器,将有引用的对象进行标记,被标记次数为0的将会被回收
缺点: 计数器本身也是一种消耗


复制算法:

在这里插入图片描述

原理:Eden区和from区的幸存的对象会复制到to区,然后from和to两个区互相交换,当复制15次后,将依然存活的对象复制到老年区.
优点:没有内存碎片
缺点:浪费空间,有一半的空间永远是空的(to区),交涉对象的存活率是百分之百,from复制到to的时候,to区直接就满了.所以复制算法适用于对象存货率低的场景,也就是在新生区.


标记清除压缩算法

在这里插入图片描述

总结

内存效率:复制算法>标记清除算法>标记压缩算法(时间复杂度)
内存整齐度:复制算法=标记压缩算法>标记清除算法
内存利用率:标记压缩算法=标记清除算法>复制算法

思考:

难道没有最优算法吗?
答案:没有,没有最好的算法,只有最适合的算法------> gc:分代收集算法
年轻代:存货率低–复制算法
老年代:区域大.存活率—标记清除(内存碎片不是太多)+标记压缩混合实现.
注:资料来源于"狂神说java"

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值