JVM垃圾回收算法全解析
JVM垃圾回收算法全解析
回答
一、标记-清除 算法
-
工作原理
- 对对象集合,进行一个标记。把可达对象和不可达对象区分开。
- 然后,对不可达对象进行一个清除操作。
-
优点
- 速度快,因为不需要移动和复制对象
-
缺点
- 会产生内存碎片,造成内存的浪费
二、标记-复制 算法
- 工作原理
- 主要应用在 Young 区。
- 通过把 eden 和 其中的一个存活区 S0,把它们中少量的存活对象复制到另一个存活区 S1。
- 然后,把 eden 和 S0 这两个区域直接清空掉。
- 如果,有发现有存活对象超过了我们设置的阈值,就直接把它们晋升到老年代。
- 后面,就依次循环运行。
- 优点
- 内存空间是连续的,不会产生内存碎片
- 缺点
- 浪费内存空间
- 复制对象会造成性能和时间上的消耗
三、标记-整理 算法
-
工作原理
-
第一阶段:标记
与"标记-清除"算法一样。
对对象集合,进行一个标记。把可达对象和不可达对象区分开。
然后,对不可达对象进行一个清除操作。
-
第二阶段:整理
把清除不可达对象后,剩下的所有碎片给整理好。
形成一整片连续可用的空余的内存。
-
-
优点
- 不会产生内存碎片
- 不会浪费内存空间
-
缺点
- 太耗时间(性能低)
小结
-
单从时间长短来看:标记-清除 < 标记-复制 < 标记-整理。
-
单从结果来看:标记-整理 > 标记-复制 >= 标记-清除