GC收集器

Serial收集器

单线程收集器,收集时会 stop the word。新生代收集用复制算法,老年代采用标记整理算法。能与CMS收集器配合使用。

ParNew收集器

Serial的多线程版本,算法策略和Serial一样。能与CMS收集器配合使用。

Parallel Scavenge(并行回收)收集器

新生代收集器,采用复制算法,多线程收集器,能设置停顿时间和吞吐量大小。

SerialOld收集器

Serial收集器的老年代版本,单线程,标记整理算法。

ParallelOld收集器

Parallel Scavenge收集器的老年代版本,多线程,标记整理算法。

CMS收集器

目的是GC停顿时间最短,采用标记清楚算法,只能回收老年代,预处理收集器,不能等老年代用完再回收,要设置阈值,提前回收。CMS会产生内存碎片,分为四个步骤:

  • 初始标记,会stw,标记存活对象,从老年代GC-ROOTS找和年轻代引用这老年代对象的对象。
  • 并发标记:从初始标记的对象中找出存活的对象,并发执行不会stw。
  • 重新标记:会stw,标记整个堆(年轻代+老年代)存活的对象。年轻代的对象引用着老年代的对象也会认为老年代对象存活。可设置在重新标记前mingc,减少年轻代引用老年代对象。
  • 并发清除:清楚对象,回收内存。不会stw,所以会产生浮动垃圾,下次可清除。

G1收集器

年轻代、老年代不再占用连续空间,G1将整个内存划分为许多区域(region),每一代都占多个region,采用复制算法,不会产生内存碎片

你可能感兴趣的:(GC收集器)