jdk1.8 java.lang.OutOfMemoryError: GC overhead limit exceeded

本文详细介绍了如何解决在运行Tomcat应用时遇到的java.lang.OutOfMemoryError: GC overhead limit exceeded错误。通过调整catalina.sh脚本中的JAVA_OPTS参数,包括设置初始和最大堆内存、元空间大小等,解决了因频繁垃圾回收导致的问题。

前一段时间项目是正常的,今天就出问题了,伤不起

报错如下,
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内存,重启一次后发现没生效,又重启一次才生效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值