JVM垃圾回收算法
JVM(Java Virtual Machine)使用垃圾回收算法来管理内存,自动释放不再使用的对象,以避免内存泄漏和内存溢出。
标记-清除
标记清除是最简单和干脆的一种垃圾回收算法,他的执行流程是:当 JVM 标记出内存中的垃圾以后,直接将其清除,但是这样有一个很明显的缺点,就是会导致内存空间的不连续,也就是会产生很多的内存碎片。
优缺点
优点:速度快,因为不需要移动和复制对象
缺点:会产生内存碎片,造成内存的浪费
标记-复制
首先将内存划分成两个区域。新创建的对象都放在其中一块内存上面,当快满的时候,就将标记出来的存活的对象复制到另一块内存区域中(注意:这些对象在在复制的时候其内存空间上是严格排序且连续的),这样就腾出来一那一半就又变成了空闲空间了。
优缺点
优点:内存空间是连续的,不会产生内存碎片。
缺点:
1、浪费了一半的内存空间。
2、复制对象会造成性能和时间上的消耗。
标记-整理
标记:它的第一个阶段与标记-清除算法是一模一样的,均是遍历 GC Roots,然后将存活的对象标记。
整理:移动所有存活的对象,且按照内存地址次序依次排列,然后将末端内存地址以后的内存全部回收。因此,第二阶段才称为整理阶段。
优缺点
优点:
1、不会产生内存碎片
2、不会浪费内存空间
缺点:太耗时间(性能低)