Java各种垃圾收集器介绍

Serial 收集器
        Serial 收集器是最基本、历史最悠久的收集器,单线程的方式收集新生代的收集器,进行收集工作时会停止用户所有的工作线程(Stop the world),比较时候运行在 Client 模式下的虚拟机

ParNew 收集器
        Serial 收集器的多线程版本,是运行在 Server 模式下虚拟机首选的新生代收集器,可以使用 -XX:+UseParNewGC 选项来强制指定它

Parallel Scavenge 收集器
       使用了复制算法的新生代收集器,和 ParNew 一样,也是多线程实现的,他们的区别在于:Parallel Scavenge 收集器关注的是尽可能地达到一个可控的吞吐量,如虚拟机总共运行了100分钟,其中垃圾收集花掉1分钟,则吞吐量就是99%

Serial Old 收集器
        Serial 收集器的老年代版本,使用“标记-整理”算法,比较时候在 Client 模式的虚拟机使用

Parallel Old 收集器
        Parallel Scavenge 收集器的老年代版本,使用多线程的“标记-整理”算法

CMS 收集器
        CMS 收集器是一种以获取最短回收停顿时间为目标的收集器,基于“标记-清除”算法

G1 收集器
        理论上的下一代收集器

各种垃圾收集器搭配的方式:

Java各种垃圾收集器介绍

目前常用的收集器搭配
1. Parallel Scavenge + Parallel Old
2. ParNew + CMS
一般来说,如果能使用 Parallel Scavenge + Parallel Old 的话就不要用 CMS,因为 Parallel 的吞吐量率更高,只要停顿时间不是太长的话,就不需要使用CMS收集器

你可能感兴趣的:(垃圾收集器)