一、标记清除法

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

二、标记整理

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

三、复制

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

相关文章:

  • 2022-01-09
  • 2022-01-13
猜你喜欢
  • 2021-07-18
  • 2022-01-22
  • 2021-09-29
  • 2021-07-31
  • 2022-01-22
  • 2021-10-16
  • 2021-12-29
相关资源
相似解决方案