java.lang.OutOfMemoryError: Java heap space

本文分析了在jdk1.8+tomcat8+oracle11g环境下,系统发布后出现的java.lang.OutOfMemoryError:Java heap space问题。通过性能测试定位原因,最终调整tomcat运行内存配置解决问题。

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

tomcat:java.lang.OutOfMemoryError: Java heap space

问题环境描述

系统所使用的的环境配置是jdk1.8+tomcat8+oracle11g,每次把系统发布到服务器上后,运行大约3天后系统就会出现内存溢出的问题,导致某一个功能点不能正常使用,之前每次的解决方法都是重启tomcat服务器,但这并不是长久之计。不仅自己不方便,也为使用方带来不方便 。

问题分析

从网上寻找各种相关的解决方案,能引起这种问题发生的原因大致分为三个:
1、写的代码不行,存在bug,存在死循环
2、或者创建的对象太多,但并没有得到释放,在进行垃圾回收之前,虚拟机分配的堆内存空间已经满了。
3、tomcat设置的运行内存、堆大小需要调整到更大

系统功能点性能测试

利用了多种测试工具来测试
1、jmeter 用来测试程序并发,发现直接测试在idea中运行的系统,并发是没有问题,但一旦发布到tomcat下面,,就会error
2、jvisualvm,该工具位于jdk安装目录下bin目录下,是jdk自带分析工具,经过一通分析,好像是string int类型占内存比较多,但对于更改程序,感觉没多大用,也可能是我看不懂。。。
3、JProfiler 用来分析并发时程序中各文件运行中内存占比,测试最大运行内存,发现最大运行内存大约980MB。。。
4、尝试优化程序,发现应该不是死循环;也没重复创建对象,优化无果。
5、调整tomcat,可以了。。。,但调整的方式有点坑

解决方案

我的tomcat是安装版,需要调整的是在tomcat8w.exe中调整 ,如下图:
在这里插入图片描述
在这里插入图片描述
调整这个地方的参数,重启tomcat,才会生效,重启后可查看tomcat运行日志,查看配置的参数大小。
在这里插入图片描述

结果

目前来看确实 是好了很多,终于不会有人三天两头的因为这个问题来找我了。。。还得持续跟进,看看效果!!!

参考链接:
【1】https://www.imooc.com/article/13518
【2】https://blog.youkuaiyun.com/lyflyyvip/article/details/82288719

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值