日志中报错,提示GC,梳理逻辑之后, 发现逻辑执行并无问题,又因为本地测试都是正常的,所以没有看代码。
在网上搜索后发现,基本是内存给小了,也是,因为我的程序会执行很多sql,每个sql的对象又很大,会占用很多的内存,这边如果一个对象超大,GC几次之后,还是无法小于2%,所以会报错。
解决办法:将服务器重启,重启命令时调大jvm内存nohup java -jar -Xms1000m -Xmx4000m performance_jar-dev.jar --server.port=8084 >msg.log 2>&1 &,执行之后再跑程序,发现并无问题了。问题解决。
总结:先梳理代码逻辑是否有死循环,是否有单个大对象的情况,重新启动服务,调大jvm内存,使GC次数减少并能一次回收多个大对象。