tomcat9服务启动时java.lang.OutOfMemoryError: Java heap space

背景:tomcat9启动war包时,使用命令行启动成功,服务启动则报堆内存溢出,报错信息如下。

        在开发时并未报遇到此错误,打成war包后,先用命令行启动正常,因用命令行启动有卡顿现象,换成用服务启动失败。

        分析:栈溢出,明显是栈区内存不够,观察日志后发现,命令行启动与服务启动分配内存大小不同。

服务启动时的内存分配如下图(黑框标记部分),只有128M-256M。

命令行启动时,并未打印内存分配的大小,只能通过命令查看

 -XX:MaxHeapSize=4276092928=4.2G,问题找到了,不同的启动方式,堆区大小不同,而我们要做的就是手动配置服务启动时的堆大小。既然是用服务启动,先去service.bat(linux service.sh)中看,果然,jvmMs与jvmMx使用的是默认设置,我们只需要将之改大点就ok。

注意:更改完毕后需要卸载服务,然后再重新安装,配置才会生效哦。 

sc delete tomcat9 #删除tomcat9服务
在service.bat同级目录下,安装服务
service.bat install
显示安装成功就ok啦!

更改后服务启动日志如下,没有再报错啦,问题成功解决。

附:tomcat命令行启动时,其初始空间(即-Xms)是物理内存的1/64,最大空间(-Xmx)是物理内存的1/4

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值