问题
通过gc日志发现应用定时每10个小时主动System.gc()触发一次fgc
排查
1、想通过arthas后台任务监听System.gc调用堆栈,但是10小时一次间隔太久。发现服务启动后会立刻主动触发一次,就服务重启时立马开始监听System.gc方法的调用堆栈,发现调用来源是sun.misc.GC$Daemon.run(GC.java:109)
2、还是看不到具体来源,基于10小时这个数字太特殊直接在网上搜索看到是cxf-core三方依赖会主动触发,查看服务确实引用cxf依赖,可以通过参数org.apache.cxf.JDKBugHacks.gcRequestLatency=true关闭固定Full GC的逻辑。
参考
https://blog.51cto.com/u_16099347/9753618
【Arthas问题排查集】谁调用了System.exit/System.gc? · Issue #20 · alibaba/arthas · GitHub
利用Arthas进行简单的故障注入_try to restart arthas-boot, select process 67745, -CSDN博客
记一次生产系统每隔10小时(36000000毫秒)固定进行一次Full GC排查思路_线上fullgc排查-CSDN博客