垃圾回收算法

JVM垃圾回收算法

JVM(Java Virtual Machine)使用垃圾回收算法来管理内存,自动释放不再使用的对象,以避免内存泄漏和内存溢出。

标记-清除

标记清除是最简单和干脆的一种垃圾回收算法,他的执行流程是:当 JVM 标记出内存中的垃圾以后,直接将其清除,但是这样有一个很明显的缺点,就是会导致内存空间的不连续,也就是会产生很多的内存碎片。

垃圾回收算法_第1张图片

优缺点

优点:速度快,因为不需要移动和复制对象

缺点:会产生内存碎片,造成内存的浪费

标记-复制

首先将内存划分成两个区域。新创建的对象都放在其中一块内存上面,当快满的时候,就将标记出来的存活的对象复制到另一块内存区域中(注意:这些对象在在复制的时候其内存空间上是严格排序且连续的),这样就腾出来一那一半就又变成了空闲空间了。

垃圾回收算法_第2张图片

优缺点

优点:内存空间是连续的,不会产生内存碎片。

缺点:

1、浪费了一半的内存空间。

2、复制对象会造成性能和时间上的消耗。

标记-整理

标记:它的第一个阶段与标记-清除算法是一模一样的,均是遍历 GC Roots,然后将存活的对象标记。

整理:移动所有存活的对象,且按照内存地址次序依次排列,然后将末端内存地址以后的内存全部回收。因此,第二阶段才称为整理阶段。

垃圾回收算法_第3张图片

优缺点

优点:

1、不会产生内存碎片

2、不会浪费内存空间

缺点:太耗时间(性能低)

你可能感兴趣的:(JVM,算法)