JVM垃圾回收-算法(九)

一、标记清除法

标记清除算法分为两步: 标记、清除
通过GC Root 开始通过引用链去查找,没有被引用的则被标记,被引用的则保留,标记完成以后直接执行清除
如下图:
JVM垃圾回收-算法(九)
**优点:**速度快
**缺点:**内存不连续,容易产生标记碎片。
由于回收时进行内存整理,如果突然间创建了一个新的对象,这个对象比较大,整个内存是可以放的下这个新对象的,但是这时会出现一个问题,如果回收的位置比内存较小,且这个新对象大于标记清除的内存,就会报内存溢出的问题

二、标记整理

标记整理解决了标记清除的标记碎片的问题,也分为两步标记、整理
优点:内存连续
缺点:在整理这块,分为了两步:清除整理,慢就慢在比标记清除算法多了一步整理的步骤
JVM垃圾回收-算法(九)

三、复制

它是内存区域划成了,大小相同的两块区域from 区、to区,在垃圾回收时,它会将存活的放到to区,当完成以后,会回收所有的from区对象,然后将to 区变成from 区,from区变成to区,反正from 和to区总有一个是空闲的
JVM垃圾回收-算法(九)
优点:内存连续
缺点: 占用两块内存