前两篇文章分别介绍了JVM 运行时内存划分和堆上的内存分配机制,本文将对垃圾收集器进行介绍,先来看下面这幅图:
图中棕色方块指的是新生代可选的垃圾收集器,蓝色方块指的是老年代垃圾收集器,G1是可以用于新生代和老年代的垃圾收集器。棕色方块和蓝色方块之间的连线表示连线一端的新生代垃圾收集器和另一端的老年代垃圾收集器可以配置使用作为整个堆的垃圾收集器组合。下面对分代对各个垃圾收集器进行介绍
Serial 收集器
E区 : S0区 : S1区 = 8 : 1 : 1
ParNew 收集器
Parallel Scavenge 收集器
吞吐量 = 运行用户代码时间 /(运行用户代码时间 + 垃圾收集时间)
,比如,虚拟机总共运行了 100 分钟,其中垃圾收集花掉一分钟,那么吞吐量就是 99%Serial Old 收集器
Parallel Old 收集器
CMS 收集器
(CPU 数量 + 3)/4
G1 收集器