美文网首页
JVM GC 原理 1:三种基本的垃圾回收算法

JVM GC 原理 1:三种基本的垃圾回收算法

作者: cbhe | 来源:发表于2022-07-19 17:43 被阅读0次

    前言

    jvm 中当前使用的垃圾回收算法(注意不是垃圾收集器)有三种,分别是标记-清除算法标记-压缩算法复制算法

    标记-清除算法

    原理:从 gc root 出发,标记处不是垃圾的存活对象,然后把剩下的没被标记到的垃圾对象清除

    标记-清除算法
    问题:垃圾回收后,空闲内存区域不连续,每次给新对象分配内存都需要遍历不连续的空闲区域,而且如果新对象大于每个空闲区域,即使空闲区域总和足够大,也无法分配新对象使用。

    标记-压缩算法

    原理:从 gc root 出发,标记出不是垃圾的存活对象,然后清除掉没被标记的垃圾对象。最后,把存活对象全部整理到堆内存的最前边,让剩下的空闲区域连续。

    标记-压缩算法
    问题:每次都需要移动存活对象,开销较大。

    复制算法

    原理:将内存划分划分成两部分(记为 A 和 B),每次使用其中一部分,例如先使用 A,当 A 剩余空间不足时,出发垃圾回收,将 A 中的存活对象放到 B 中,然后直接回收 A 的全部空间。

    复制算法
    问题:内存空间始终有一部分未被使用,浪费明显

    相关文章

      网友评论

          本文标题:JVM GC 原理 1:三种基本的垃圾回收算法

          本文链接:https://www.haomeiwen.com/subject/gzjdirtx.html