Java - 垃圾回收器介绍
2021-02-27 本文已影响0人
夹胡碰
概述
详情
垃圾回收器 | JDK版本 | 回收区域 | 线程模型 | 回收算法 | 特点 | 对比 |
---|---|---|---|---|---|---|
Serial | 1.3 | 新生代 | 单线程 | 标记-复制 | ||
ParNew | 新生代 | 多线程 | 标记-复制 | 关注暂停时间 | ||
Parallel Scavenge | 1.4 | 新生代 | 多线程 | 标记-复制 | 关注吞吐量 可以设置 -XX:MaxGCPauseMillis -XX:GCTimeRatio |
比ParNew多了个调节策略 -XX:+UseAdaptiveSizePolicy |
Serial Old | 老年代 | 单线程 | 标记-整理 | CMS Concurrent Mode Failure 失败时的后备预案 |
||
Parallel Old | 1.6 | 老年代 | 多线程 | 标记-整理 | 吞吐量优先 | |
CMS(Concurrent Mark Sweep) | 1.5 | 老年代 | 多线程 | 标记-清除 | 关注停顿时间 回收过程: 1. 初始标记 - Stop The World 2. 并发标记 3. 重新标记 - Stop The World 4. 并发清除 |
会产生浮动垃圾 |
G1 | 1.6开始 9正式 |
新生代+老年代 | 多线程 | 整体是标记-整理 局部是标记-复制 |
把内存区域分成多个Region 优先回收价值收益最大的 区域划分:Region、Humongous 回收过程: 1. 初始标记 - Stop The World 2. 并发标记 3. 最终标记 - Stop The World 4. 筛选回收 - Stop The World 在延迟可控的情况下,获得尽可能高的吞吐量
|
优点: 与CMS相比不易产生碎片 缺点: 额外负载比CMS高 设计复杂 内存8G以下用CMS 以上用G1 |
其他垃圾回收器
Shenandoah 低延迟垃圾回收器 标记回收过程更复杂
ZGC Region大小细化