GC入门介绍

JVM在进行GC(垃圾回收机制)时,并不是对这三个区域统一回收。大部分时候,回收都是新生代~

①: 新生代()

②: 幸存区(from  来, to 去)

③: 老年区

GC两种类: 轻GC(普通的GC), 重GC(全局GC)

GC题目:

1、JVM的内存模型和区分~ 详细到每个区放什么?

2、堆里面的分区有哪些? Eden, form ,to 老年区, 说说他们的特点!

3、GC的算法有哪些? 标记清除法,标记压缩,复制算法,引用计数法,怎么用的?

4、轻GC 和 重 GC 分别在什么时候发生?

引用计数法

复制算法:(谁空谁是to,当一个对象经历了15次GC,都还没有死,就会进入养老区

                            -XX: -XX:MaxTenuringThreshold=5
通过这个参数可以设定进入老年代的时间,默认是15
)

1、每次GC 都会将伊甸园区活的对象移到幸存区中:一旦Eden区被GC后,就会是空的

 好处: 没有内存的碎片~!!

坏处: 浪费了内存空间~~: 多了一半空间永远是空to。假设对象100%存活(极端情况)

                                复制算法最佳使用场景:对象存活度 较低的时候;新生区!

标记清除算法:

优点:不需要额外的空间

缺点:两次扫描,严重浪费时间,会产生内存碎片

标记压缩算法

 标记清除压缩算法

先标记在清除几次,最后压缩

总结:

1、内存效率: 压缩算法>标记清除算法>标记压缩算法(时间复杂度)

2、内存整齐度:复制算法>标记压缩算法>标记清除算法

3、内存利用率:标记压缩算法 = 标记清除算法 > 复制算法

难道没有最优的算法嘛?

没有最好的算法,只有最合适的算法——————>GC:分代收集算法

年轻代(伊甸园区+ 幸存区)

1、存活率低

2、复制算法

老年代:

1、区域大:存活率高

2、利用标记清除(内存碎片不是太多)+标记压缩混合 实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值