1. Serial收集器
单线程的收集器,这个单线程不仅仅是说他会用一个CPY或者一条收集线程去完成垃圾收集,更重要的是他要暂停其他所有线程直到GC结束,优点是采用了复制算法简单高效,对于运行在Client模式下的虚拟机是一个很好的选择。
2.ParNew收集器
是Serial回收器的多线程版本,其余大部分都和Serial回收器完全一样,但确是运行在Server模式下的虚拟机的首选新生代收集器,因为他可以和CMS收集器配合工作
3. Parallel Scavenge收集器
看上去和前面的ParNew回收器一致,但是有一个可控制的吞吐量,控制停顿时间,采用了GC的自适应的调节策略,可以根据当前的运行情况动态调节停顿时间和最大的吞吐量。
4. Serial Old收集器
Serial回收器 的 老年代版本
5. Parallel Old收集器
Parallel Scavenge回收器的老年代版本,使用多线程和 标记-整理 算法,
6. CMS 收集器
以最短的回收停顿时间作为目标的收集器, Concurrent Mark Sweep,可以看出是以 标记-清扫 实现的,分为四个步骤
- 初始标记 , 仅仅关联GC Roots能直接关联到的对象
- 并发标记
- 重新标记 修正并且标记因为并发标记期间导致变化的对象标记
- 并发清除 缺点是对对CPU资源⾮常敏感,在CPU核 ⼼数较少的情况下,对应⽤的运⾏速度有较⼤影响;⽆法处理浮动垃圾, 即在垃圾收集过程中总有新的垃圾不断产⽣,只能积累到下⼀次GC再收 集;标记-清除算法容易导致产⽣⼤量内存碎⽚,从⽽提前触发Full GC。