Java面试之HotSpot垃圾分代回收算法

JVM垃圾回收机制
HotSpot的垃圾回收算法
堆内存分为新生代和老年代两大区域,根据每代的不同采用最合适的垃圾回收算法
默认情况下新生代占整个堆的1/3,老年代占2/3
新生代的特点:绝大多数对象在新生代中被创建,这里的垃圾回收机制非常频繁,且速度很快,每次新生代的垃圾回收之后,通常只有少量对象可以存活,所以新生代通常采用复制算法,即只把少量的存活对象复制走就可以把当前内存区域一下子清空来实现垃圾回收,由于存活的数量比较少,所花成本很低
复制算法的操作:新生代内部通常分为三个区:一个Eden区,两个survivor区,他们的默认比例为8:1:1,所有的新对象都在Eden区生成,Eden区填满之后,就会触发一次新生代的垃圾回收,称为minor gc,将少量的存活对象复制到其中一个survivor中,再将Eden区直接清空即可完成Minor GC,之后Eden会产生新的垃圾,在下一次Minor GC中,上一次的survivor的Eden中的存活对象复制到另一个Survivor区,之后对survivor区和Eden区进行清空,就又完成一次Minor GC,之后每一次都是这样回收,即每次Minor GC要清空Eden和survivor区域,两个survivor区有两个名字,一个叫from区,一个叫to区,慢慢会存在一些存活周期长的对象,将他们移动到老年区即可
如何判断什么时候可以把新生代的对象放入老年代
新生代每发生一次Minor GC,存活的对象年龄加一,当达到阈值时(一般默认为15),即可进入老年代 ,survivor空间不够存储对象也会直接进入老年代,这就叫新生代担保机制,这种情况是很危险的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值