垃圾收集器
一张图了解所有垃圾收集器:
上图中的收集器两两之间有连线的,则说明可以搭配使用。
由于markdownpad2不知道怎么回事插入的图片无法显示,如果无法正常查看图片,可以移步到我的CSDN地址查看图片:https://blog.csdn.net/qq_40995335/article/details/83716798
Serial收集器
单线程的收集器,在进行垃圾收集时,必须暂停其他所有的工作线程,直到它收集结束。Serial收集器是虚拟机运行在Client模式下的默认新生代收集器,对于限定单个CPU的环境来说,Serial收集器由于没有线程交互的开销,可以获得最高的单线程收集效率。
ParNew收集器
是Serial收集器的多线程版本,是许多虚拟机运行在Server模式下的首选新生代收集器。
Parallel Scavenge收集器
目标是达到一个可控制的吞吐量。经常被称为“吞吐量优先”收集器。参数-XX:+UseAdaptiveSizePolicy打开后,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或者最大的吞吐量————GC自适应的调节策略(GC Ergonomics)。自适应调节策略也是Parallel Scavenge收集器与ParNew收集器的一个重要区别。
Serial Old收集器
Serial收集器的老年代版本,是单线程收集器,给Client模式下的虚拟机使用。
Parallel Old收集器
是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法,在注重吞吐量以及CPU资源敏感的场合,用于配合Parallel Scavenge收集器。
CMS(Concurrent Mark Sweep)收集器
以获取最短回收停顿时间为目标的收集器。基于“标志-清理”算法。具有并发收集、低停顿的特点。
收集过程分为4个步骤:
- 初始标记(CMS initial mark)
- 并发标记(CMS concurrent mark)
- 重新标记(CMS remark)
- 并发清除(CMS concurrent sweep)
G1收集器
是面向服务端应用的垃圾收集器。
具有以下特点:
- 并行与并发
- 分代收集
- 空间整合
- 可预测的停顿
收集器运行过程大致如下:
- 初始标记(Initial Marking)
- 并发标记(Concurrent Marking)
- 最终标记(Final Marking)
- 筛选回收(Live Data Counting and Evacuation)