linux环境mule JVM短生命周期对象性能调整

最近,在一项目上,发现后端mule es  cpu耗用高。经过jstat -gcutil jvm进程号 1000 10分析,发现FGC次数,较多。

根据gc观察,O老生代,经过达到80% 以上。而新生代survior s1,s2内存空间比较小。判断有新生代对象没经过几次gc,就进入了老生代。


修改mule/conf/wrapper.conf .增加如下选择。

wrapper.java.additional.5=-XX:+PrintGCDetails
wrapper.java.additional.6=-XX:+PrintGCDateStamps
wrapper.java.additional.7=-verbose:gc
wrapper.java.additional.8=-Xloggc:gc.log
wrapper.java.additional.9=-XX:ParallelGCThreads=10
wrapper.java.additional.10=-XX:+UseConcMarkSweepGC
wrapper.java.additional.11=-XX:+UseParNewGC
wrapper.java.additional.12=-XX:NewRatio=3
wrapper.java.additional.13=-Xss256K
wrapper.java.additional.14=-XX:SurvivorRation=2
wrapper.java.additional.15=-XX:TargetSurvivorRatio=8

NewRatio=3属性增加新生代大小。年轻代(Eden和两个Survivor与年老代的比值),年轻代为堆的1/4大小。

-XX:SurvivorRatio=2      Eden区与Survivor区的大小比值。代表Eden区为2/10,survivor是8/10.survivor存储Eden快速回收后的数据,survivor适当调高有利于缓解经几次fast gc后,才会回收的对象,这些对象经过几次gc,是可以回收掉的。如果survior太小,则经过一两次回收,由于survivor空间过小,则会直接进入Old代。如果适中,在经过几次gc后,回收掉。不用在放入old代。经几次回收才能释放的对象,可以理解为中短期生命周期对象,它是有机会回收,但需要其它依赖释放引用。


参考文献:

 JVM实用参数(五)新生代垃圾回收

http://ifeve.com/useful-jvm-flags-part-5-young-generation-garbage-collection

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值