Tomcat -- catalina.bat

本文详细解释了如何在Tomcat的catalina.bat文件中手动分配内存以防止溢出,包括堆内存和非堆内存的设置建议,以及为何在Windows服务环境下需要修改注册表参数来确保正确的内存分配。同时,文中提到了如何避免因Java堆内存设置不当导致的OOM错误。

Tomcat – catalina.bat 配置

1. 手动分配内存,防溢出
# 位置:..\Tomcat\bin\catalina.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 为服务启动;
Wind
D:\apache-tomcat-9.0.37\bin>catalina.bat run Using CATALINA_BASE: "D:\apache-tomcat-9.0.37\" Using CATALINA_HOME: "D:\apache-tomcat-9.0.37\" Using CATALINA_TMPDIR: "D:\apache-tomcat-9.0.37\\temp" Using JRE_HOME: "D:\jdk11_jb51" Using CLASSPATH: "D:\apache-tomcat-9.0.37\\bin\bootstrap.jar;D:\apache-to cat-9.0.37\\bin\tomcat-juli.jar" NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-UNNAMED -add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport ALL-UNNAMED java.util.logging.ErrorManager: 4: Unable to create [D:\apache-tomcat-9.0.37" - catalina.home=D:\apache-tomcat-9.0.37"\logs] java.util.logging.ErrorManager: 4: Unable to create [D:\apache-tomcat-9.0.37" - catalina.home=D:\apache-tomcat-9.0.37"\logs] java.util.logging.ErrorManager: 4: Unable to create [D:\apache-tomcat-9.0.37" - catalina.home=D:\apache-tomcat-9.0.37"\logs] java.util.logging.ErrorManager: 4: Unable to create [D:\apache-tomcat-9.0.37" - catalina.home=D:\apache-tomcat-9.0.37"\logs] 04-Aug-2012 21:06:15.779 涓ラ噸 [main] org.apache.catalina.startup.Bootstrap.in tClassLoaders Class loader creation threw exception java.lang.IllegalArgumentException: The double quote ["] character can nly be used to quote paths. It must not appear in a path. This loader path is n t valid: ["D:\apache-tomcat-9.0.37" -Dcatalina.home=D:\apache-tomcat-9.0.37"/li ","D:\apache-tomcat-9.0.37" -Dcatalina.home=D:\apache-tomcat-9.0.37"/lib/*.jar" "D:\apache-tomcat-9.0.37/lib","D:\apache-tomcat-9.0.37/lib/*.jar"] at org.apache.catalina.startup.Bootstrap.getPaths(Bootstrap.jav :593) at org.apache.catalina.startup.Bootstrap.createClassLoader(Boot trap.java:170) at org.apache.catalina.startup.Bootstrap.initClassLoaders(Boots rap.java:144) at org.apache.catalina.startup.Bootstrap.init(Bootstrap.java:25 ) at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:44 ) D:\apache-tomcat-9.0.37\bin>
最新发布
06-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值