41、垃圾回收器 — 总结
01
垃圾回收器对比
垃圾收集器 |
分类 |
作用位置 |
使用算法 |
特点 |
适用场景 |
Serial |
串行运行 | 新生代 | 复制算法 | 响应速度优先 | 适用于单CPU环境下的Client模式 |
ParNew |
并行运行 | 新生代 | 复制算法 | 响应速度优先 | 多CPU环境下Server模式下与CMS配合使用 |
Parallel |
并行运行 | 新生代 | 复制算法 | 吞吐量优先 | 适用于后台运算而不需要太多交互的场景 |
Serial Old |
串行运行 | 老年代 | 标记压缩算法 | 响应速度优先 | 适用于单CPU环境下的Client模式 |
Parallel Old |
并行运行 | 老年代 | 标记压缩算法 | 吞吐量优先 | 适用于后台运算而不需要太多交互的场景 |
CMS |
并发运行 | 老年代 | 标记清除算法 | 响应速度优先 | 适用于互联网或B/S业务 |
G1 |
并发、并行运行 | 新生代、老年代 | 标记压缩算法、复制算法 | 响应速度优先 | 面向服务端应用 |
02
垃圾回收器(GC)发展阶段
-
Serial => Parallel(并行) => CMS(并发)=> G1 => ZGC
03
如何选择垃圾收集器
优先调整堆的大小让JVM自适应完成
如果内存小于100M,使用串行收集器
如果是单核、单击程序,并且没有停顿时间的要求,串行收集器
如果是多 CPU、需要高吞吐量、允许停顿时间超过1s,选择并行或者JVM自己选择
如果是多 CPU、追求低停顿时间,需要快速响应(比如延迟不能超过1s,如互联网应用),使用并发收集器
官方推荐G1,性能高。现在的互联网项目,基本都是用G1
04
GC日志解读
-
GC:
Full GC
05
GC日志分析工具
-
生成GC日志文件配置:-Xloggc:../logs/gc.log
GCEasy:在线工具,导入log文件即可(https://gceasy.io/)
其他工具:GCViewer、GCHisto等
扫码关注我
你们点点“分享”,给我充点儿电吧~