1、如果服务堆的大小不是很大,比如100M,那推荐:串行收集器,这个对应起来效率最高
参数:-XX:+UserSerialGC
2、如果应用运行在单核的机器或者虚拟机内核数是单核,那推荐:串行收集器,这个使用启用一些并行收集器其实没有任何收益和效果
参数:-XX:+UserSerialGC
3、如果应用是优先考虑“吞吐量”的,并且对响应时间没有太高要求的,那推荐:并行收集器
参数:-XX:+UserSerialGC
4、 如果你的应用对响应时间要求较高,想要较少的停顿。甚至 1 秒的停顿都会引起大量的请求失败,那么选择G1、ZGC、CMS都是ok的,这些收集器的GC停顿通常比较短,同时还需要一些额外的资源去处理这些工作,所以吞吐量通常会低一点
参数:-XX:+UseConcMarkSweepGC、-XX:+UseG1GC、- XX:+UseZGC
5、总结
综上,我们结合实际场景说明下:我们平台的web平台,都是对响应速度要求非常高的,所以收集器一般都会纪总在CMS、G1、ZGC上,但像某些定时任务,使用并行收集器会更好些