天天看点

GC之如何选择垃圾回收器

组合的选择

单CPU或小内存,单机程序

-XX:+UseSerialGC

多CPU,需要最大吞吐量,如后台计算型应用(串型收集器)

-XX:+UseParalellGC 或者-XX:+UseParalellOldGC(互相关联激活)

多CPU,追求低停顿时间,需快速响应如互联网应用(并行收集器)

-XX:+UseParNewGC或者-XX:+UseConcMarkSweepGC

新生代与老年代收集器的对应关系

JAVA SpringBoot微服务的生产部署和调优

java -server -Xms1024m -Xmx1024m -XX:+UseG1GC -jar xxx.jar

参数 新生代垃圾收集器 新生代算法 老年代垃圾收集器 老年代算法
-XX:+UseSerialGC SerialGC 复制 SerialOldGC 标记整理
-XX:+UseParNewGC ParNewGC 复制 SerialOldGC 标记整理
-XX:+UseParallelGC Parallel[Scavenge] 复制 ParallelOldGC 标记整理
-XX:+UseConcMarkSweepGC ParNew 复制

CMS+SerialOld的收集器组合

(Serial Old作为CMS出错的后备收集器)

标记清除
-XX:+UseG1GC G1(整体上采用标记-整理算法)

局部是通过复制算法,

不会产生内存碎片

JAVA SpringBoot微服务的生产部署和调优

java -server -Xms1024m -Xmx1024m -XX:+UseG1GC -jar xxx.jar