HotSpot虚拟机中垃圾收集器的介绍

HotSpot虚拟机垃圾收集器

HotSpot虚拟机中垃圾收集器的介绍_第1张图片
垃圾收集器

上图展示了7种作用于不同分代的收集器,如果两个收集器之间存在连线,就说明它们可以搭配使用。虚拟机所处的区域,则表示它是属于新生代收集器还是老年代收集器。

Serial收集器

线程模式:单线程
特性:简单高效
收集算法:复制算法
适用场景:虚拟机运行在Client模式
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第2张图片
Serial收集器

ParNew收集器

线程模式:多线程
特性:简单、高效、并发
收集算法:复制算法
适用场景:虚拟机运行在多CPU的Server模式(唯一能够与CMS收集器配合使用的新生代并发收集器)
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第3张图片
ParNew收集器

Parallel Scavenge收集器

线程模式:多线程
特性:可控吞吐量
收集算法:复制算法
适用场景:后台运算但不需要太多交互的任务
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第4张图片
Parallel Scavenge收集器

Serial Old收集器

线程模式:单线程
特性:简单、高效
收集算法:标记-整理算法
适用场景:Client模式下的虚拟机使用;Server模式下,其一,用于jdk1.5以前版本中与Parallel Scavenge收集器搭配使用;其二,作为CMS收集器的后备预案,在并发收集反生Concurrent Mode Failure时使用。
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第5张图片
Serial Old收集器

Parallel Old 收集器

线程模式:多线程
特性:
收集算法:标记-整理算法
适用场景:可以配合Parallel Scavenge收集器使用,在注重吞吐量以及CPU资源敏感的场合,可以优先考虑Parallel Scavenge 与Parallel Old收集器
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第6张图片
Parallel Old 收集器

CMS(Concurrent Mark Sweep)收集器

线程模式:多线程
特性:并发收集、低停顿
收集算法:标记-清除算法
适用场景:重视服务的响应速度,希望系统停顿时间最短。
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第7张图片
CMS收集器

G1(Garbage-First)收集器

线程模式:多线程
特性:并行与并发,分代收集,空间整合,可预测的停顿
收集算法:标记-清除算法
适用场景:重视服务的响应速度,希望系统停顿时间最短。
运行示意图:

HotSpot虚拟机中垃圾收集器的介绍_第8张图片
G1收集器

相关概念

并行:指多条垃圾收集线程并行工作,但此时用户线程仍然处于等待状态。

并发:指用户线程与垃圾收集线程同时执行(但不一定是并行的,可能会交替执行),用户程序在 继续运行,而垃圾收集程序运行于另一个CPU上

吞吐量:CPU用于运行用户代码的时间与CPU总消耗时间的比值,即吞吐量=运行用户代码时间/ (运行用户代码时间+垃圾收集时间),高吞吐量可以高效率的利用CPU时间,尽快完成程序的运算任务

你可能感兴趣的:(HotSpot虚拟机中垃圾收集器的介绍)