转载请注明原创出处,谢谢!
参考gc,发现大概一小时运行一次FGC,特别奇怪,笨神一看这样的问题就知道是system gc导致的,rmi默认一小时主动触发一次,由于没有gc日志,通过jstat命令观察2小时发现通过观察的确是由于System.gc导致的。
system.gc其实是做一次full gc system.gc会暂停整个进程
1小时1次FGC问题,该问题在高并发情况下对性能产生很大的波动不可小看,也许一个小小的调优可以给性能带来很大的改善。通过查看JVM参数的确发现了RMI的相关配置,如果不是非必要建议去掉,如果非要保留,建议添加如下参数:java -Dsun.rmi.dgc.client.gcInterval=36000000 -Dsun.rmi.dgc.server.gcInterval=36000000
单位是毫秒,可适当延长触发FGC的定时时间间隔。 文中配置为10小时。java -XX:+ExplicitGCInvokesConcurrent
该方法可以指定System.gc()采用 CMS 算法,FGC时停机时间会变短,但是CMS GC次数不会变。
个人公众号