主要分为三种算法
标记-清除(Mark-Sweep)算法
首先进行标记工作,标识出所有要回收的对象,标记完成后统一进行清除。缺点有效率低,标记完成后会产生大量的内存碎片。空间内存太多可能会导致下一次分配较大对象时没有连续内存。
复制算法
将可用的内存容量分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存一次性清理掉。这样每次只对一个半区进行内存回收,内存分配时不用考虑内存碎片等问题。代价是只使用一半的内存空间。
现在大部分的新生代GC都是基于复制算法。新生代大部分的对象都是朝生夕死的。将内存分为一块较大的Eden区和两块较小的Survivor区域。每次使用Eden和一个Survivor.每次清理时把Eden和Survivor中还活着的区域复制到另外一块Survivor,最后清理掉刚才使用的Eden和Survivor区域。标记-整理(Mark-Compact)算法
类似于标记-清除(Mark-Sweep)算法,但为了避免内存碎片化,它会在清理过程中将对象移动,以确保移动后的对象占用连续的内存空间
标签: survivor、eden、标记、一块、清理
笔试题
刷题
简历模板
AI算法
大数据
内推
内推: