GC收集器

7种:

1.serial收集器

单线程,工作时必须暂停其他工作线程。多用于client机器上,使用复制算法

一个单线程的收集器,在进行垃圾收集时候,必须暂停其他所有的工作线程直到它收集结束。
特点:CPU利用率最高,停顿时间即用户等待时间比较长。
适用场景:小型应用
通过JVM参数-XX:+UseSerialGC可以使用串行垃圾回收器。

2.ParNew收集器(又叫Parallel收集器

serial收集器的多线程版本,server模式下虚拟机首选的新生代收集器。复制算法

采用多线程来通过扫描并压缩堆
特点:停顿时间短,回收效率高,对吞吐量要求高。
适用场景:大型应用,科学计算,大规模数据采集等。
通过JVM参数 XX:+USeParNewGC 打开并发标记扫描垃圾回收器。

3.Parallel Scavenge(并行清除)收集器

复制算法,可控制吞吐量的收集器。吞吐量即有效运行时间。

4.Serial Old收集器

serial的老年代版本,使用整理算法。

5.Parallel Old收集器

第三种收集器的老年代版本,多线程,标记整理

6.CMS收集器

目标是最短回收停顿时间。标记清除算法实现,使用多线程的算法去扫描堆,对发现未使用的对象进行回收。分四个阶段:

  • 初始标记:GC Roots直连的对象做标记
  • 并发标记:多线程方式GC Roots Tracing
  • 重新标记:修正第二阶段标记的记录
  • 并发清除。

也可以说是6个阶段:
(1)初始标记
(2)并发标记
(3)并发预处理
(4)重新标记
(5)并发清除
(6)并发重置
特点:响应时间优先,减少垃圾收集停顿时间
适应场景:服务器、电信领域等。
通过JVM参数 -XX:+UseConcMarkSweepGC设置

7.G1收集器

基本思想是化整为零,将堆分为多个Region,优先收集回收价值最大的Region。

  • 并行并发
  • 分代收集
  • 空间整合(标记整理算法)
  • 可预测的停顿

在G1中,堆被划分成 许多个连续的区域(region)。采用G1算法进行回收,吸收了CMS收集器特点。
特点:支持很大的堆,高吞吐量
--支持多CPU和垃圾回收线程
--在主线程暂停的情况下,使用并行收集
--在主线程运行的情况下,使用并发收集
实时目标:可配置在N毫秒内最多只占用M毫秒的时间进行垃圾回收
通过JVM参数 –XX:+UseG1GC 使用G1垃圾回收器

results matching ""

    No results matching ""