Tomcat java.lang.OutOfMemoryError

本文探讨了java.lang.OutOfMemoryError:PermGenSpace错误的原因及解决方案,特别针对使用大量第三方jar包的web应用程序。文章提供了调整JVM参数的具体方法,并推荐了一种优化第三方jar包部署的策略。
java.lang.OutOfMemoryError: PermGen space
内存溢出。
如果你的应用中有很多CLASS的话,就很可能出现PermGen space错误,
这种错误常见在web服务器对JSP进行pre compile的时候。如果你的WEB APP下使用了大量的第三方jar, 其大小超过了jvm默认的大小(4M)
那么就会产生此错误信息了。
解决方法: 手动设置MaxPermSize大小
修改TOMCAT_HOME/bin/catalina.sh
在“echo "Using CATALINA_BASE: $CATALINA_BASE"”上面加入以下行:
JAVA_OPTS="-server -XX:PermSize=64M -XX:MaxPermSize=128m

建议:将相同的第三方jar文件移置到tomcat/shared/lib目录下,这样可以达到减少jar 文档重复占用内存的目的。
### 解决Tomcat 9中Java堆内存不足错误 当遇到`java.lang.OutOfMemoryError: Java heap space` 错误时,表明当前使用的JVM堆大小设置不合适,通常是因为设定的数据过小所致[^2]。为了有效解决问题并提高性能,可以采取以下措施来增加JVM堆大小。 #### 修改环境变量配置 一种常见的做法是在启动脚本中调整JVM参数,具体操作如下: 对于Windows平台,在`bin/catalina.bat` 文件内加入或修改下列行: ```batch set JAVA_OPTS=-Xms512m -Xmx2048m -XX:MaxPermSize=512m ``` 而对于Linux/Unix系统,则编辑 `bin/setenv.sh` (如果不存在则创建),添加相同的内容: ```bash export JAVA_OPTS="-Xms512m -Xmx2048m -XX:MaxPermSize=512m" ``` 上述命令中的 `-Xms` 和 `-Xmx` 参数分别用于指定初始和最大堆空间大小;而 `-XX:MaxPermSize` 则定义永久代的最大容量(针对较旧版本的HotSpot JVM)。这里建议根据实际情况合理分配资源[^1]。 #### 使用jmap工具监控堆使用状况 通过运行命令 `jmap -heap <PID>` 可以获取到目标进程中关于Heap的具体信息,这有助于了解现有配置是否满足需求,并据此做出相应调整。 #### 应用重启与服务重置 完成以上更改之后,记得先停止正在运行的服务实例,再按照官方文档指示重新部署应用程序。特别提醒的是,某些情况下可能还需要完全移除原有服务注册表项后再重建新的一项,比如利用 Windows 的 Service Control Manager (SCM) 工具执行类似下面的操作序列: ```batch sc delete tomcat9 # 删除tomcat9服务 service.bat install # 安装新的服务副本 ``` 确保一切正常后继续后续工作流程[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值