【问题标题】:Arquillian with tomcat7 running into Java Heap Space problems, only on linux带有 tomcat7 的 Arquillian 遇到 Java 堆空间问题,仅在 linux 上
【发布时间】:2012-08-23 12:21:07
【问题描述】:

我们正在使用 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 信息 - 使用以下命令启动 Tomcat:[java, -Dcom.sun.management.jmxremote.port=8089,-Dcom.sun.management.jmxremote.ssl=false,-Dcom.sun.management.jmxremote.authenticate=false,-Xmx512m,-XX:MaxPermSize=128m,-类路径,/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-测试,-Djava.io.tmpdir=/home/user/apache-tomcat-testing/temp,org.apache.catalina.startup.Bootstrap,-config, /home/user/apache-tomcat-testing/conf/server.xml,开始]

我尝试用

编辑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.xmlfailsafe-maven-pluginmaven-surefire-plugin 中添加了<argLine>-Xms2048m -Xmx2048m</argLine>,但仍然是同样的错误...

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

谢谢!

【问题讨论】:

    标签: linux testing tomcat7 heap-memory jboss-arquillian


    【解决方案1】:

    您似乎正在使用 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

    【讨论】:

    • 如何解决托管 tomcat 上的 Maven 和 arquillian 的 PermGen 空间问题。这是否也解决了 PermGen 空间问题?
    • @Yashar 否,为 perm gen 问题设置 MaxPermSizePermSize 参数。并允许 Arquillian 在 n 部署之后重新启动 Tomcat。后者有一个配置属性。
    • javaVmArguments 选项也适用于 Wildfly 8.1.0。虽然我找不到相应的文档。
    猜你喜欢
    • 2013-03-30
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-18
    • 1970-01-01
    • 1970-01-01
    • 2010-10-17
    相关资源
    最近更新 更多