前一段时间项目是正常的,今天就出问题了,伤不起
报错如下,
java.lang.OutOfMemoryError: GC overhead limit exceeded
网上有多种解释;
1,S循环, 某一个方法,创建N+对象导致
2,调整tomcat 内存(根据服务器内存大小调整)
在catalina.sh脚本的最前边加上如下代码:
1
JAVA_OPTS=’-Xms512m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m’
表示初始内存为512M,最大内存为1024M。可以将Xms和Xmx设置为一样大,可以避免经常回收内存。
方法:找到tomcat部署路径下./bin/catalina.sh文件,(分两种情况)
2.1> 在java1.8之前的版本中 JAVA_OPTS="-Xms512m -Xmx2048m -Xss1024K
-XX:PermSize=256m -XX:MaxPermSize=512m -XX:-UseGCOverheadLimit"
2.2> java1.8版本
JAVA_OPTS="-Xmx12000m -XX:-UseGCOverheadLimit"
本人用的这种(这种好像不行1.8前的版本,就这个问题坑了我好长时间)
JAVA_OPTS=’-server -Xms1024m -Xmx2048m -XX:MetaspaceSize=128m
-XX:MaxMetaspaceSize=256m’
用这个最终版本1.1***
2.2> java1.8版本
JAVA_OPTS="-Xmx1024m -XX:-UseGCOverheadLimit"
总结,调整tomcat内存,重启一次后发现没生效,又重启一次才生效。
本文详细介绍了如何解决在运行Tomcat应用时遇到的java.lang.OutOfMemoryError: GC overhead limit exceeded错误。通过调整catalina.sh脚本中的JAVA_OPTS参数,包括设置初始和最大堆内存、元空间大小等,解决了因频繁垃圾回收导致的问题。
608

被折叠的 条评论
为什么被折叠?



