深入理解JVM——垃圾回收算法

一、标记—清除算法

  1. 介绍
    1. 最基础的收集算法
    2. 涉及“标记”和“清除”:首先标记所需回收的对象,一并清除。
  2. 特征
    1. 效率不高
    2. 空间问题:结束后产生大量不连续的内存碎片,导致后续分配大内存对象时不得不提前触发垃圾收集操作。
      深入理解JVM——垃圾回收算法

二、复制算法

1.介绍

  1. 内存均分成两块,但只使用其中一块,这块用完了就将还存在的对象复制到第二块中,一次性清除使用过的内存空间。
  2. 无需考虑内存碎片问题

2.特征

  1. 实现简单,运行高效
  2. 内存缩小为一半,代价过大

  3. 深入理解JVM——垃圾回收算法

三、标记-整理算法

  1. 介绍

    1.先标记,将所有存活的对象都向一端移动
    2.直接清除端边界以外的内存
    深入理解JVM——垃圾回收算法

四、分代收集算法

  1. 介绍

    1. 根据存活周期将内存分为几块,一般把堆分为新生代和老年代
      新生代

      1. 特征:每次垃圾回收时只有少量对象存活
      2. 算法:复制算法

      老年代

      1. 特征:对象存活率高,无多余空间进行分配担保
      2. 算法:标记-清除或者标记-整理 算法