JVM面试题:年轻代与老年代

1、为什么要区分年轻代和老年代?

主要是有两个原因,一个是大部分对象的生命周期都很短,只有少部分对象可能会存活很长时间。另一个是垃圾回收会导致 stop the world,也就是应用会暂时停止访问。为了使 stop the world 持续的时间尽可能短以提高并发式 GC 所能应付的内存分配速率,有些垃圾收集器就将对象分成两类,存活时间短的对象所处的区域叫年轻代,存活时间长的对象叫老年代。JDK 8 及以前的垃圾收集器都是有这个分代概念的。

2、哪些对像会进入老年代?

一般有两种情况,第一种是先创建的对象太大了(创建时如果大小超过了新生代Eden区的一定阈值),就会直接进入老年代,另一种是对象的年龄太老了,每发生一次 Minor GC,存活的年龄就 +1,达到默认值 15 就会自动晋升成老年代。

3、什么时候会进行年轻代GC?

一般在年轻代的 Eden 区空间不足时,就会触发年轻代 GC,也就是 Minor GC。

4、什么时候会进行老年代GC?

大约有三种情况,第一次是 Young GC 发生之前,如果老年代的可用内存小于以往 Young GC 后升入老年代的对象的平均大小,此时就带先触发一次 Old GC(或Major GC),腾出更多空间;第二次是 Young GC 触发之后,如果需要晋升老年代的对象在老年代中空间不足,此时还带进行一次 Old GC;第三次是如果老年代的内存使用率超过了 92%,也会直接触发 Old GC。

总之就是如果老年代空间不足以放下更多对象了,那就带进行 Old GC 腾空间了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值