首先要明白一个道理,JVM性能调优,最主要还是为了减少GC的频率,因为频繁full gc会导致业务线程长时间停顿,导致full gc的原因可能是JVM堆内存参数设置不合理,或者代码写的有问题导致内存泄露,对象不能及时被清理。
具体如何排查,流程如下
1、使用Jmeter或者阿里云付费压测
2、压测观察机器带宽、CPU、内存总体使用率,JVM进程CPU、内存使用率
3、jstat -gc pid 1000 100 观察对象回收状况、与gc频率。
4、dump内存快照,看是否存在JVM参数设置不合理导致频繁full gc、还是代码存在内存泄露。
5、进行JVM参数调优或者代码优化。