由于Java堆内存不足,Tomcat不会部署应用程序

时间:2015-03-10 12:33:00

标签: java tomcat java-ee deployment war

我想将我的.war(cca 55MB)应用程序部署到apache tomcat 7应用程序服务器,但部署失败。当我尝试部署一些较小的.war存档(cca 4MB)时,它完成没有任何问题。我试图增加java heap空间,现在它应该足够了。此外,尝试部署此.war后,甚至tomcat manager崩溃。我很高兴有任何建议如何解决这个问题。

root@vm15187:~# java -XX:+PrintFlagsFinal -version | grep -iE 'HeapSize|PermSize|ThreadStackSize'
uintx AdaptivePermSizeWeight                    = 20              {product}
 intx CompilerThreadStackSize                   = 0               {pd product}
uintx ErgoHeapSizeLimit                         = 0               {product}
uintx HeapSizePerGCThread                       = 87241520        {product}
uintx InitialHeapSize                          := 65019648        {product}
uintx LargePageHeapSizeThreshold                = 134217728       {product}
uintx MaxHeapSize                              := 1042284544      {product}
uintx MaxPermSize                               = 174063616       {pd product}
uintx PermSize                                  = 21757952        {pd product}
 intx ThreadStackSize                           = 1024            {pd product}
 intx VMThreadStackSize                         = 1024            {pd product}
 java version "1.7.0_75"
 OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~deb7u1)
 OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)

在我的catalina.out日志中有以下错误消息:

SEVERE: Error waiting for multi-thread deployment of WAR files to complete
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space


SEVERE: Error waiting for multi-thread deployment of directories to completehostConfig.deployWar=Deploying web application archive {0}
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space

完整日志here

1 个答案:

答案 0 :(得分:0)

您需要继续增加内存分配-XmxNNNNm,直到它工作,然后使用内存分析工具来了解消耗它的内容。根据我的经验,一个55MB的WAR文件是一个相当大的应用程序。

请注意,您应该使用:

CATALINA_OPTS="-Xms..."

而不是JAVA_OPTS。后一个环境变量适用于为支持Tomcat而启动的所有Java进程。 CATALINA_OPTS仅适用于服务器进程。