GC 四大算法:引用计数算法、复制算法、标记清除算法、标记压缩清除算法 。GC:分代收集算法

1、引用计数算法(JVM基本不用)

请添加图片描述
每个对象都占用一个计数器,每用一次,计数器加一,计数器为0的清除。

2、复制算法(一般在新生区使用)

请添加图片描述

注意:因为from和to会进行交换,所以哪个为空那个就是to区

在伊甸园区不断生成对象,当满了的时候会出发轻GC,将存活的对象从伊甸园区复制到幸存from区,然后清空伊甸园区,在幸存from区满了后会将伊甸园区和幸存from区都复制到幸存to区,然后清空伊甸园区和幸存from区,这时候就把有对象的to区当作from区(保证to区一直为空),如果一个对象经历了15次GC(默认,可修改:-XX:MaxTenuringThreshold=个数),就可以进入到老年区。

内存碎片:被清除的对象所占用的空间

好处:没有内存碎片(避免了对象放不下的情况产生)
坏处:浪费了一半空间,有一半永远是空的

使用场景:对象存活率低的地方

3、标记清除算法

请添加图片描述
优点:不需要额外的空间
缺点:两次扫描,严重浪费时间,会产生内存碎片

4、标记压缩算法(老年代使用)

优化了标记清除算法
请添加图片描述

三部曲:标记,清除.压缩

总结

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

没有最好的算法,只有最合适的算法====》GC:分带收集算法

年轻代:(轻GC:Minor GC)
存活率低===》复制算法

老年代:(重GC:Full GC)
区域大:存活率
标记清除(内存碎片不是太多)+标记压缩混合实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值