JVM菜鸟进阶高手之路五:RMI触发一次System.gc

零度    2017/07/28    总阅读量

高并发、锁   思考   面试   实践   Netty   Linux   Redis   MySQL   Nginx   Maven   Git   ElasticSearch   Spring  

参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现通过观察的确是由于System.gc导致的。 system.gc其实是做一次full gc system.gc会暂停整个进程 1小时1次FGC问题,该问题在高并发情况下对性能产生很大的波动不可小看,也许一个小小的调优可以给性能带来很大的改善。通过查看JVM参数的确发现了RMI的相关配置,如果不是非必要建议去掉,如果非要保留,建议添加如下参数:

-Dsun.rmi.dgc.client.gcInterval=36000000 
-Dsun.rmi.dgc.server.gcInterval=36000000

单位是毫秒,可适当延长触发FGC的定时时间间隔。 文中配置为10小时。

 -XX:+ExplicitGCInvokesConcurrent 

该方法可以指定System.gc()采用 CMS 算法,FGC时停机时间会变短,但是CMS GC次数不会变。


本人其他JVM菜鸟进阶高手之路相关文章或者其他系列文章可以关注公众号【匠心零度】获取更多!!!

如果读完觉得有收获的话,欢迎点赞、关注、加公众号【匠心零度】。


扫描关注:匠心零度

(转载本站文章请注明作者和出处 匠心零度-jiangxinlingdu

Show Disqus Comments

腾讯云:新客户代金券
腾讯云:3年时长最低265元/年
阿里云:ECS云服务器2折起


目录