串行收集器
并行收集器
CMS收集器
eden s0 s1 tenured
from to
绝大多数都是在 eden区 但也有 栈区 和 old区
s0 和 s1 大小相等 功能上也是对称的,复制算法
串行收集器
最古老 ,最稳定
效率高
但是可能会较长时间停顿 因为 只使用一个线程回收
-XX:UseSerialGC
-- 新生代、老年代使用串行回收
-- 新生代 复制算法
-- 老年代 标记-压缩 (往一端移动)
并行收集器
ParNew 新生代的并行收集器
- XX:+UseParNewGC
新生代并行
老年代并行
ParNew收集器其实就是Serial收集器的多线程版本。新生代并行,老年代串行;新生代复制算法、老年代标记-压缩
参数控制:-XX:+UseParNewGC ParNew收集器
-XX:ParallelGCThreads 限制线程数量
多线程 ,需要多核支持
-XX:ParallelGCThreads 指定线程回收数量
Parallel收集器
Parallel Scavenge收集器类似ParNew收集器,Parallel收集器更关注系统的吞吐量。可以通过参数来打开自适应调节策略,虚拟机会根据当前系统的运行情况收集性能监控信息,动态调整这些参数以提供最合适的停顿时间或最大的吞吐量;也可以通过参数控制GC的时间不大于多少毫秒或者比例;新生代复制算法、老年代标记-压缩
参数控制:-XX:+UseParallelGC 使用Parallel收集器+ 老年代串行
Parallel Old 收集器
Parallel Old是Parallel Scavenge收集器的老年代版本,使用多线程和“标记-整理”算法。这个收集器是在JDK 1.6中才开始提供
参数控制: -XX:+UseParallelOldGC 使用Parallel收集器+ 老年代并行
对于并行的 参数
调试这两个参数,只能选一个
-----------------------------
CMS concurrent Mark Sweep 并发标记清除