说说JVM的GC功能之一GC算法的选择

如果你的应用可以忍受Full GC带来的停顿,Throught收集器(即并行GC)能获得最高的性能。

同是他使用CPU和堆的大小都比其他的收集器少(当然不包括Serial收集器,它的使用场景太有限)。


如果无法忍受Full GC带来的停顿,如果可用堆较小,可以选择CMS或G1,如果可用堆较大,建议使用G1。

1.  对于高负荷的应用,若GC时间不超过3%, 调优GC的优化空间比较有限,建议其他地方入手。

2. 如果停顿时间与目标接近,你需要调整最大停顿时间。如果差距很大。

    建议缩小新生代的大小(如果是FullGC的导致,则减少老年代大小),这样停顿次数增加,但单次停顿时间短了。


几点总结:

  1. 所有回收算法对新生代的回收都需要"Stop-The-World"。

  2. Serial Old,Throught收集器收集对于老年代的回收,需要"Stop-The-World"。

  3. CMS收集器在CPU不足或因碎片无法装载对象时,会退变成单线程的Serial Old。

  4. G1收集器因为老年代也分几个区,可能执行区与区之间Copy回改,一定程度减少碎片问题。

  5. 如果你关注整体请求的响应时间,CMS更合适。如果只关注90%的请求的响应时间,Throught收集器更好。

  6. 当CPU充足时,CMS可能表现出比Throught收集器更好的吞吐量。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值