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

标签 java tomcat jakarta-ee deployment war

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

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

最佳答案

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

请注意,您应该使用:

CATALINA_OPTS="-Xms..."

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

关于java - 由于 Java 堆内存不足,Tomcat 不会部署应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28963869/

相关文章:

java - 在 EJB Web 服务的构造函数中抛出异常

Java 在 DefaultTableModel 上创建监听器

java - Spring 数据保存与 saveAll 性能

spring - 具有相同数据源的多个 SpringBoot 应用程序

java - 使用 Tomcat,Google Chrome 无法打开 localhost :8080 but Safari can

java - tomcat 7.0.52 启动报错

java - java 网络应用程序中用于身份验证的任何库?

java - DDD 中的存储库层

Java Elasticsearch - 具有存在条件的 Boolquery

java - 如何实现滑动窗口或者减少这些嵌套循环?