0
点赞
收藏
分享

微信扫一扫

如何防止 Tomcat 内存溢出呢?

吓死我了_1799 2022-06-09 阅读 93

随着系统并发量越来越高,Tomcat 所占用的内存就会越来越大,如果对 Tomcat 的内存管理不当,则可能会引发 Tomcat 内存溢出的问题,那么,如何防止 Tomcat 内存溢出呢?我们今天就来一起探讨下这个问题。


防止 Tomcat 内存溢出可以总结为两个方案:一个是设置 Tomcat 启动的初始内存,一个是防止 Tomcat 所用的 JVM 内存溢出。接下来,我们就分别对这两种方案作出简单的介绍。

设置启动初始内存

其初始空间(即-Xms)是物理内存的 1/64,最大空间(-Xmx)是物理内存的 1/4。可以利用 JVM 提供的-Xmn -Xms -Xmx 等选项可进行设置。


实例


以下给出 1G 内存环境下 java jvm 的参数设置参考:


JAVA_OPTS="-server -Xms800m -Xmx800m  -XX:PermSize=64M -XX:MaxNewSize=256m -XX:MaxPermSize=128m -Djava.awt.headless=true "
JAVA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m"
CATALINA_OPTS="-server -Xms768m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m -XX:NewSize=192m -XX:MaxNewSize=384m"

复制代码


Linux


在/usr/local/apache-tomcat-7.0/bin 目录下的 catalina.sh 文件中,添加:JAVA_OPTS='-Xms512m -Xmx1024m',要加“m”说明是 MB,否则就是 KB 了,在启动 tomcat 时会报内存不足。


  • -Xms:初始值
  • -Xmx:最大值
  • -Xmn:最小值


Windows


在 catalina.bat 最前面加入 set JAVA_OPTS=-Xms128m -Xmx350m,如果用 startup.bat 启动 tomcat,OK 设置生效。够成功的分配 200M 内存。但是如果不是执行 startup.bat 启动 tomcat 而是利用 windows 的系统服务启动 tomcat 服务,上面的设置就不生效了,就是说 set JAVA_OPTS=-Xms128m -Xmx350m 没起作用。上面分配 200M 内存就 OOM 了。。windows 服务执行的是 bin\tomcat.exe。它读取注册表中的值,而不是 catalina.bat 的设置。


解决办法


修改注册表


HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Tomcat Service Manager\Tomcat5\Parameters\JavaOptions

复制代码


原值为


-Dcatalina.home="C:\ApacheGroup\Tomcat 7.0"
-Djava.endorsed.dirs="C:\ApacheGroup\Tomcat 7.0\common\endorsed"
-Xrs

复制代码


加入 -Xms300m -Xmx350m 重起 tomcat 服务,设置生效。

举报

相关推荐

0 条评论