背景:最近消息对队列的数据堆积很厉害,经查询发现每次堆积时gc中能看到程序停
2019-11-21T00:32:19.714+0800: 20943.373: Total time for which application threads were stopped: 3.3090540 seconds, Stopping threads took: 3.2776961 seconds
1、查看什么原因导致的停顿,启动参数加入
-XX:+PrintSafepointStatistics
-XX:PrintSafepointStatisticsCount=1
-XX:+UnlockDiagnosticVMOptions
-XX:+LogVMOutput
-XX:LogFile=vm.log
然后重新启动程序,观察生成的gc.log和vm.log,发现里面很多
391.750: RevokeBias [ 59 1 1 ] [ 1925 0 1925 0 0 ] 1
vmop [threads: total initially_running wait_to_block] [time: spin block sync cleanup vmop] page_trap_count
2、取消偏向锁,启动参数中加入
-XX:-UseBiasedLocking
发现问题还是存在,只是少了很多。现在大部分GC收集时,如下所示
2907.359: GenCollectForAllocation [ 59 1 2 ] [ 2050