垃圾收集算法 面试 笔记

本文总结了垃圾收集算法在面试中的重点,包括标记-清除、复制、标记-压缩算法,以及针对不同生命周期对象的分代收集器算法。标记-清除算法效率不高且易产生内存碎片;复制算法适用于新生代,高效但内存利用率低;标记-压缩算法常用于老年代,减少碎片;分代收集结合多种算法,优化不同区域的垃圾收集。
摘要由CSDN通过智能技术生成

面试小结

1、标记-清除算法

标记-清除算法 是一种常见的基础垃圾收集算法,它将垃圾收集分为两个阶段

标记阶段:标记出可以回收的对象
清除阶段:回收被标记的对象所占用的空间

缺点:

1、标记和清除的效率都不算高
2、容易产生大量不连续的内存碎片,碎片太多可能会导致后续没有足够的连续内存分配给较大的对象,从而提前触发新的一次垃圾收集动作

2、复制算法

把内存空间化为两个相等的区域,每次只使用其中一个区域。在垃圾收集时,遍历当前使用的区域,把存活对象复制到另外一个区域中,最后将当前使用的区域的可回收的对象进行回收。

代价:内存为原来的一半
复算法的效率与存活对象的数目多少有很大的关系,如果存活对象很少,复制算法的效率就会很高,适用于生命周期很短的对象

复制算法常用于新生代中

3、标记-压缩算法

标记可回收的对象后将所有存活对象压缩到内存的一端,使他们紧凑地排列在一起,然后对边界以外的内存进行回收,回收后,已用和未用的内存都各自一边。

老年代对象存活率会较高,如果用复制算法,这样会有较多的复制操作,导致效率降低

标记-压缩算法常用于老年代

4、分代收集器算法

分代收集算法会结合不同的收集算法来处理不同的空间

根据生命周期的长短将它们分别放到不同的区域,并在不同的区域采用不同的收集算法,这就是分代的概念

java堆区分类

新生代

    Eden 空间
    From Survivor空间
    To Survivor 空间

由于Eden空间中大都数对象生命周期很短,所以新生代的空间划分并不均分,HotSpot虚拟机默认Eden 空间和两个Survivor 空间的所占的比例为8 : 1

老年代

在这里插入图片描述

有两种情况Eden 空间 和 From Survivor 空间存活的对象不会复制到 To Survivor 空间,而是晋级到老年代

1、存活对象的分代年龄超过所制定的阉值

2、另一种是To Survivor 空间容量达到阉值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值