java八股文(文字版)

1.GC分代回收问题

(1)首先对于分代有个定义,堆空间分成了新生代和老年代。新生代又被分成了伊甸园,幸存区From,幸存区To。

(2)对象创建之后会先存在于伊甸园中。
(2.1)但是如果此时伊甸园的空间不够了,那么这个时候会触发Minor GC,使用的是“标记-复制”的算法。没被回收幸存下来的对象被复制到了幸存区TO中,并且寿命+1。
(2.2)交换幸存区From和幸存区To的指针,此时To区指针就指向空白的区域了,From指针指向了刚才那些活下来的对象存在的区域。

(3)此时继续添加对象,伊甸园又满了,这个时候就触发了第二次的Minor GC。此时要回收的区域除了伊甸园,还要检查From指针指向的区域里面的对象。存活下来的对象被复制到了To分区中,并且寿命+1。
(3.1)交换幸存区From和幸存区To的指针。

(4)继续添加对象,继续回收当幸存区From中的对象中的寿命超过一个阈值(默认15),被对象就会被放到老年代中。

(5)继续添加对象,如果新生代和老年代的空间都不足了。此时会触发Full GC,将新生代和老年代的垃圾全部回收掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值