linux - 带有 tomcat7 的 Arquillian 遇到 Java 堆空间问题,仅在 linux 上

标签 linux testing tomcat7 heap-memory jboss-arquillian

我们在 tomcat 7 上运行 arquillian...
使用我同事的 MAC,测试工作正常,但在我的 Linux 计算机上(我们都有 8GB 内存)它失败了:

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

当我开始测试时,我在堆栈中看到这一行:

14:05:56.482 INFO - Starting Tomcat with: [java, -Dcom.sun.management.jmxremote.port=8089, -Dcom.sun.management.jmxremote.ssl=false, -Dcom.sun.management.jmxremote.authenticate=false, -Xmx512m, -XX:MaxPermSize=128m, -classpath, /home/user/apache-tomcat-testing/bin/bootstrap.jar:/home/user/apache-tomcat-testing/bin/tomcat-juli.jar, -Djava.endorsed.dirs=/home/user/apache-tomcat-testing/endorsed, -Dcatalina.base=/home/user/apache-tomcat-testing, -Dcatalina.home=/home/user/apache-tomcat-testing, -Djava.io.tmpdir=/home/user/apache-tomcat-testing/temp, org.apache.catalina.startup.Bootstrap, -config, /home/user/apache-tomcat-testing/conf/server.xml, start]

我试图编辑 bin/catalina.sh

JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+DisableExplicitGC"

但它仍然有 xmx=512m在堆栈中。
我还在 pom.xml 中添加了<argLine>-Xms2048m -Xmx2048m</argLine>对于 failsafe-maven-pluginmaven-surefire-plugin但仍然是同样的错误...

更改 arquillian 测试的 xmx 的正确位置在哪里?

谢谢!

最佳答案

看来您使用的是 Arquillian 管理的 Tomcat 7 容器。使用 arquillian.xml 中的 javaVmArguments 属性指定 Xmx 值:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<arquillian xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://jboss.org/schema/arquillian"
    xsi:schemaLocation="http://jboss.org/schema/arquillian http://jboss.org/schema/arquillian/arquillian_1_0.xsd">

    <container qualifier="tomcat" default="true">
        <configuration>
            <property name="catalinaHome">${CATALINA_HOME:target/apache-tomcat-7.0.20}</property>
            <property name="javaVmArguments">-Xms2048m -Xmx2048m</property>
            <property name="jmxPort">8089</property>
            <property name="bindHttpPort">8080</property>
            <property name="user">manager</property>
            <property name="pass">password</property>
            <property name="serverConfig">server.xml</property>
        </configuration>
    </container>
</arquillian>

托管 Tomcat 7 容器支持的属性的完整引用在 Arquillian Confluence wiki 中。 .

关于linux - 带有 tomcat7 的 Arquillian 遇到 Java 堆空间问题,仅在 linux 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12091475/

相关文章:

java - 配置在测试中被忽略

testing - 如何测试另一个国家的站点 "from"?

gwt - 无法弄清楚为什么我不能将 GWT 应用程序部署到 Apache Tomcat 7

Java 的 System.out.println();它会阻止程序吗 tty 会有延迟

regex - 在同一行捕获多个正则表达式模式

unit-testing - GoogleTest中有没有类似于Igloo的LastException的东西?

Maven 版本 : Could not start Tomcat

java - 使用 HtmlUnit 进行抓取时出现 OutOfMemoryError

linux - 如何在我的 bash PROMPT 中为当前的 git 分支添加颜色?

ruby-on-rails - 在 Windows 虚拟机上运行的 Rails