Java Tomcat关闭失败,内存错误
我在64位CentOS服务器上安装了ApacheTomcat 7.0.27,物理内存为37G。对于在Tomcat中运行的web应用程序,我需要大量可用内存,因此我已设置了类似于以下内容的Tomcat setenv.sh:Java Tomcat关闭失败,内存错误,java,tomcat,memory,Java,Tomcat,Memory,我在64位CentOS服务器上安装了ApacheTomcat 7.0.27,物理内存为37G。对于在Tomcat中运行的web应用程序,我需要大量可用内存,因此我已设置了类似于以下内容的Tomcat setenv.sh: export JAVA_OPTS=" -Xms30g -Xmx30g -XX:PermSize=256m -XX:MaxPermSize=256m -XX:NewSize=6g -XX:MaxNewSize=6g
export JAVA_OPTS="
-Xms30g
-Xmx30g
-XX:PermSize=256m
-XX:MaxPermSize=256m
-XX:NewSize=6g
-XX:MaxNewSize=6g
-XX:SurvivorRatio=8
-XX:+DisableExplicitGC
-XX:+UseConcMarkSweepGC
-XX:+UseParNewGC
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSInitiatingOccupancyFraction=80"
我的Java版本是:
java version "1.6.0_41"
Java(TM) SE Runtime Environment (build 1.6.0_41-b02)
Java HotSpot(TM) 64-Bit Server VM (build 20.14-b01, mixed mode)
当我运行{tomcat_home}/bin/startup.sh时,应用程序启动并正常运行,但偶尔当我使用{tomcat_home}/bin/shutdown.sh关机时,我会收到以下消息:
Error occurred during initialization of VM
Could not reserve enough space for object heap
为什么会发生这种情况?关机脚本试图通过运行一个连接到Tomcat的关机端口(8009?)并发送消息的小型Java程序来进行有序关机
该程序在自己的JVM中运行,如果您的系统内存不足,则可能无法启动该JVM以向正在运行的Tomcat发送关机命令。top命令显示机器上仍有3.5G可用空间。我希望这足以运行那个小型关闭程序。该程序是否使用了在{tomcat_home}/bin/setenv.sh中设置的相同java选项?这个答案表明我应该在setnenv.sh中的CATALINA_opts变量中指定堆大小,而不是在java_opts中。JAVA_OPTS中的任何内容都用于此答案所指的关闭婴儿车。所以本质上我是想再分配30个Gig来关闭Tomcat。