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,采用复制算法,不会产生内存碎片

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容