Java垃圾回收机制——java堆

本文详细介绍了Java中堆的垃圾回收机制,包括新生代使用的复制算法和老年代采用的标记-整理算法。阐述了对象如何从新生代晋升到老年代的过程,如通过年龄阈值和大对象直接晋升等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

堆中的垃圾回收机制分为新生代和老年代。

新生代:新生代的垃圾回收用的是复制算法,给新生代分一块区域存放新new出来的对象,将这块区域分成十份,其中八份为Eden空间,两份为Survivor空间(From Survivor与To Survivor),将新生成的对象放入Eden,若Eden满了可以放From Survivor空间,如果From Survivor空间也被填满就触发Minor GC,标记还存活的对象,并将这些对象存入To Survivor空间,清理掉Eden空间与From Survivor空间的对象,然后将From Survivor空间与To Survivor空间的名字与功能互换。

老年代:老年代的垃圾回收使用的是标记-整理算法,分出一块区域存放老年代对象,让所有存活对象都都向一端移动,然后清理掉其他空间的对象。

新生代对象如何转换为老年代对象?

1.长期存活对象将进入老年代

每经过一次Minor GC将age加1,当一个对象经过多次(默认15次)Minor GC都没有被清理掉时,将进入老年代。

2.大对象直接进入老年代

当一个对象比较大,新生代内存存放不下该对象时,将直接进入老年代。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值