大家好,又见面了,我是你们的朋友全栈君。
最近项目出现tomcat宕机的情况,即项目运行一段时间后tomcat就会停止运行,解决方法步骤如下:
首先进入linux服务器,使用命令top进行查看,发现tomcat的cpu利用率很高,超过100%
接着,使用命令ps -ef|grep tomcat,查找到对应的pid
接着使用jmap -heap pid.发现PermGen 的利用率达到了99.99%,所以初步确定了问题是出在永久带内存空间太小。
解决方法,在tomcat的启动文件(catalina.sh)中添加如下参数,加大永久带的内存
-XX:PermSize=256M -XX:MaxPermSize=512M
这样情况得到了缓解,但运行一段时间以后,又出现了宕机问题,检查后发现又是永久带满了,这次使用
jmap -permstat pid查看,发现有许多delegatingClassLoader没有被回收,这是由于项目使用了很多的反射导致的,而该classloader的作用是提高反射的效率。
解决方法,干脆不使用该classloader,最终完整的解决方法如下
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/159383.html原文链接:https://javaforall.cn