【Java虚拟机的垃圾收集算法】

时间:2022-12-27 19:17:11

一 标记-清除算法(Mark-Sweep)

  首先标记出所有需要回收的对象,标记完成后统一回收。

  主要缺点: 1. 标记和清除效率都很低 2. 产生大量不连续的内存碎片,导致后面分配大内存空间失败

  二 复制算法

  将可用内存划分为大小相等的两块, 每次只使用其中一块。 当这块用完后,就将还存活对象复制到另外一块上面,再把已经使用的内存空间一次清理掉。

  主要缺点: 代价太高,至少一半的内存不能使用。

  三 标记-整理算法

  标记过程和标记-清除算法一致,但是后续步骤是让所有存活的对象都向一端移动,然后清理掉边界以外的系统之家内存。

  四 分代收集算法

  当前商业虚拟机都采用此算法,分为不同对象代,去进行不同管理。