【Java面试题第五期】Java中垃圾收集算法有哪些?

本文回顾了Java中的垃圾收集算法,包括标记-清除、复制、标记-整理和分代收集。复制算法解决了标记-清除的效率和内存碎片问题,而Java新生代采用8:1:1的优化复制算法。标记-整理算法用于减少内存碎片,适用于存活率高的场景。分代收集结合了不同算法的优点,针对新生代和老年代分别采用不同的策略。这些知识在Java面试中经常被考察。
摘要由CSDN通过智能技术生成

IT面试题练习

GC这块也是面试的重点,面试长问,实际上如果只一般公司的面试涉及的并不深,最基本的算法还是要了解的,几种收集算法都比较简单,相信大家都知道,这里个大家简单的回顾下。

标记-清除

这是垃圾收集算法中最基础的,首先标记那些要被回收的对象,然后统一回收。

缺点是效率不高,内存碎片多,优点是算法简单。

复制算法

为了解决效率问题,复制算法将可用内存按容量划分为相等的两部分,然后每次只使用其中的一块,当一块内存用完时,就将还存活的对象复制到第二块内存上,然后一次性清除完第一块内存,下次回收再将第二块上存活对象复制到第一块。

解决了标记-清除算法的效率和内存碎片问题,缺点是浪费了一半内存。

Java新生代采用优化的复制算法

将内存划分为8:1:1,较大是Eden区,其余两块较小内存区叫Survior区。优先使用Eden,当Eden不足时触发回收机制把存活的对象复制到其中一块Survior区,然后回收另外两块区域。

当Survivor不够时,会将这些对象通过分配担保机制复制到老年代中。

使用这种算法的原因是新生代对象存活率较低,每次回收大部分都会被回收,存活较少。

标记-整理

清除对象的时候先将可回收对象移动到一端,然后清除掉端边界以外的对象

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值