本文共 562 字,大约阅读时间需要 1 分钟。
如果你的应用可以忍受Full GC带来的停顿,Throught收集器(即并行GC)能获得最高的性能。
同是他使用CPU和堆的大小都比其他的收集器少(当然不包括Serial收集器,它的使用场景太有限)。
如果无法忍受Full GC带来的停顿,如果可用堆较小,可以选择CMS或G1,如果可用堆较大,建议使用G1。
1. 对于高负荷的应用,若GC时间不超过3%, 调优GC的优化空间比较有限,建议其他地方入手。
2. 如果停顿时间与目标接近,你需要调整最大停顿时间。如果差距很大。
建议缩小新生代的大小(如果是FullGC的导致,则减少老年代大小),这样停顿次数增加,但单次停顿时间短了。
几点总结:
所有回收算法对新生代的回收都需要"Stop-The-World"。
Serial Old,Throught收集器收集对于老年代的回收,需要"Stop-The-World"。
CMS收集器在CPU不足或因碎片无法装载对象时,会退变成单线程的Serial Old。
G1收集器因为老年代也分几个区,可能执行区与区之间Copy回改,一定程度减少碎片问题。
如果你关注整体请求的响应时间,CMS更合适。如果只关注90%的请求的响应时间,Throught收集器更好。
当CPU充足时,CMS可能表现出比Throught收集器更好的吞吐量。
转载地址:http://zjcbx.baihongyu.com/