vlambda博客
学习文章列表

41、垃圾回收器 — 总结

01

垃圾回收器对比

垃圾收集器

作用位置

使用算法

特点

适用场景

Serial

串行运行 新生代 复制算法 响应速度优先 适用于单CPU环境下的Client模式

ParNew

并行运行 新生代 复制算法 响应速度优先 多CPU环境下Server模式下与CMS配合使用

Parallel

并行运行 新生代 复制算法 吞吐量优先 适用于后台运算而不需要太多交互的场景

Serial Old

串行运行 老年代 标记压缩算法 响应速度优先 适用于单CPU环境下的Client模式

Parallel Old

并行运行 老年代 标记压缩算法 吞吐量优先 适用于后台运算而不需要太多交互的场景

CMS

并发运行 老年代 记清除算 响应速度优先 适用于互联网或B/S业务

G1

并发、并行运行 新生代、老年代 标记压缩算法、复制算法 响应速度优先 面向服务端应用

02

垃圾回收器(GC)发展阶段

  1. Serial => Parallel(并行) => CMS(并发)=> G1 => ZGC 


03

如何选择垃圾收集器

  1. 优先调整堆的大小让JVM自适应完成

  2. 如果内存小于100M,使用串行收集器

  3. 如果是单核、单击程序,并且没有停顿时间的要求,串行收集器

  4. 如果是多 CPU、需要高吞吐量、允许停顿时间超过1s,选择并行或者JVM自己选择

  5. 如果是多 CPU、追求低停顿时间,需要快速响应(比如延迟不能超过1s,如互联网应用),使用并发收集器

  6. 官方推荐G1,性能高。现在的互联网项目,基本都是用G1


04

GC日志解读

  1. GC:

  2. Full GC  

  3. 41、垃圾回收器 — 总结



05

GC日志分析工具

  1. 生成GC日志文件配置:-Xloggc:../logs/gc.log

  2. GCEasy:在线工具,导入log文件即可(https://gceasy.io/

  3. 其他工具:GCViewer、GCHisto等



扫码关注我




你们点点“分享”,给我充点儿电吧~