先上图
说一下这个图的由来。
最开始的现象是程序刚启动起来的时候,没有任何问题正常运行,但是到后期卡顿严重,基本跑一会儿就卡大概5秒左右才能继续执行一段时间,之后再卡顿5秒,这样。
第一反映是自己新加的activiti工作流引擎那部分模块出了问题,因为没加之前从来没有过这个问题。
然后就开始排查之路,写代码,写定时,查看工作流引擎模块中最核心的那部分代码的执行时间。
很遗憾那部分代码都是秒过,现在想起来应该是异步的原因吧。
然后陷入了僵局,没办法,打印内存堆栈出来看看吧
jmap -dump:format=b,file=filename pid,保存到文件里,差不多3GB。然后打开mat导入进去
96.14%????什么情况
然后开始苦逼的翻activiti的源码,发现这段
行吧,给了他一个值指定缓存大小之后,效果还是很明显的。
4GB是因为给的他参数4GB了,后来发现完全用不了这么多,2G足矣