windows下配置tomcat服务器的jvm内存大小的两种方式
Posted gne-hwz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了windows下配置tomcat服务器的jvm内存大小的两种方式相关的知识,希望对你有一定的参考价值。
难得遇到一次java堆内存溢出(心里想着,终于可以来一次jvm性能优化了$$)
先看下报错信息,
java.lang.OutOfMemoryError: GC overhead limit exceeded
错误就是发出了这样的信号: 执行垃圾收集的时间比例太大, 有效的运算量太小. 默认情况下, 如果GC花费的时间超过 98%, 并且GC回收的内存少于 2%, JVM就会抛出这个错误。
造成这个问题的原因可能是项目里某个地方定义的太多的map,list对象,或者一次从数据库中查询的数据量过大。
资料来源:OutOfMemoryError系列(2): GC overhead limit exceeded
查看tomcat服务启动信息,默认tomcat的内存分配大小是初始化128,最大值为256MB
根据网上教程,在tomcat\\bin\\catalina.bat文件
rem ----- Execute The Requested Command --------------------------------------- echo Using CATALINA_BASE: "%CATALINA_BASE%" echo Using CATALINA_HOME: "%CATALINA_HOME%" echo Using CATALINA_TMPDIR: "%CATALINA_TMPDIR%"
在Execute The Request Command注释下面添加参数,设置jvm内存最大值
set "JAVA_OPTS=%JAVA_OPTS% -Xms256m -Xmx512m"
配置完之后再次查看启动日志tomcat/logs/catalina.2019-07-08.log
发现日志里显示,jvm参数还是128 - 256 没变化
继续查询资料,我们修改的catalina.bat配置文件对以服务方式启动的tomcat无效果Tomcat内存设置详解
6.0以上的tomcat需要在tomcatw.exe文件中设置参数,比如我的tomcat9w.exe
用这个方法的前提是我们的服务名称必须是tomcat9,否则这个tomcat9w.exe运行会报错,服务tomcat9未安装
安装tomcat服务的方法:在tomcat/bin目录下,运行命令 service.bat install
Usage: service.bat install/remove [service_name] [/user username]
服务安装完后,设置如上图的配置,启动服务后,内存修改完成。
看下监控的截图(这张图原本的jvm内存最大为256MB时,内存使用率为89%),修改内存为512MB之后就好很多了
通过以上内存的配置,可以总结windows下修改tomcat服务器jvm内存的两种方法:一种,直接修改catalina.bat文件,修改完后可以通过startup.bat方式启动直接生效
另一种就是作为windows服务后台运行方式启动,这个需要修改tomcatw.exe的启动参数(不知道是不是动态参数修改,猜测不是)
以上是关于windows下配置tomcat服务器的jvm内存大小的两种方式的主要内容,如果未能解决你的问题,请参考以下文章