Tomcat OutOfMemoryError错误的解决

测试正常的Tomcat Java Application实际运行时,运行一段时间后访问网页返回错误,出现java.lang.OutOfMemoryError。原因是保存到内存的数据量太大,造成Tomcat内存泄漏。解决办法一是修改代码使用分页,二是提高Tomcat使用的内存,方案1才是根本解决之道。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

测试好好的Tomcat Java Application,到了实际运行的时候,出现以下故障:

运行一段时间以后,访问所有网页返回错误:

2005-08-18 15:54:58 StandardWrapperValve[action]: Servlet.service() for servlet action threw exception
java.lang.OutOfMemoryError

查了好久,分析原因如下:

保存到内存的数据量太大,造成Tomcat内存泄漏。

实际情况分析:

我的Application中使用ArrrayList来保存数据库,由于数据量限制在300以内,所以没有使用分页,在多人同时使用时,内存来不及释放,溢出。

解决办法:

1、修改代码,使用分页;

2、提高Tomcat使用的内存;

方法如下:

修改WEB服务器或应用服务器的虚拟机参数
java -Xms128M -Xmx128M ......

方法1操作步骤:

在catalina.bat文件中找到:doStart标签
在java命令后加上-Xms128M -Xmx128M就行了

方法2操作步骤:

run.sh 增加
JAVA_OPTS="$JAVA_OPTS -Xms256m ?CXmx800m -XX:PermSize=64m
-XX:MaxPermSize=512m"
run.bat增加
set JAVA_OPTS=Xms256m ?CXmx800m -XX:PermSize=64m
-XX:MaxPermSize=512m
其中的数字可以自己适当调节

解决方案2只是解决燃眉之急,方案1才是解决之道。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值