本文介绍: 【代码】Tomcat — catalina.bat。
Tomcat – catalina.bat 配置
1. 手动分配内存,防溢出
# 位置:..Tomcatbincatalina.bat;
# @echo off 下面添加(第二行):
set JAVA_OPTS=-server -Xms2048m -Xmx2048m -Xss512k -XX:NewSize=256m -XX:MaxNewSize=512m -XX:PermSize=256m -XX:MaxPermSize=512m
# 默认单位是KB
-server: 启动jvm时以服务器方式启动,比客户端启动慢,但性能较好;
# 堆内存
-Xms: 初始化内存大小,默认是物理内存的1/64;(cpu性能高时此值应设的大一些)
-Xmx: 可以使用的最大内存,默认是物理内存的1/4;(建议设为物理内存的一半)
-Xss: 每增加一个线程(线程)消耗的内存;
# 非堆内存
-XX:NewSize: 新生成的池的初始大小,默认2M;
-XX:MaxNewSize: 新生成的池的最大大小,默认32M;
-XX:PermSiz: 设定内存的永久保存区初始值, 默认64M;
-XX:MaxPermSize: 设定内存的永久保存区最大值, 默认64M;
PS:
# 1. 建议把内存的最高值跟最低值的差值缩小,不然会浪费很多内存的,建议均设为物理内存的一半;
# 2. 默认空余堆内存小于40%时,JVM就会增大堆直到-Xmx的最大限制;空余堆内存大于70%时,JVM会减少堆直到-Xms的最小限制。因此服务器一般设置-Xms、-Xmx 相等以避免在每次GC 后调整堆的大小;
# 3. 如果-Xmx 不指定或者指定偏小,应用可能会导致OOM错误,此错误来自JVM,不是Throwable的,无法用try…catch捕捉;
# 注册 tomcat 为服务启动;
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服务执行的是bintomcat.exe.他读取注册表中的值,而不是catalina.bat的设置.
解决办法:
修改注册表:
计算机HKEY_LOCAL_MACHINESOFTWAREWOW6432NodeApache Software FoundationProcrun 2.0tomcatParametersJava -> Options;
原值为
-Dcatalina.home="C:ApacheGroupTomcat 5.0"
-Djava.endorsed.dirs="C:ApacheGroupTomcat 5.0commonendorsed"
-Xrs //没有手动添加
加入 -Xms300m -Xmx350m
重起tomcat服务,设置生效
原文地址:https://blog.csdn.net/weixin_43738911/article/details/135978312
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_66405.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。