How to handle "[ERROR] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space" in JENKINS?

How to handle "[ERROR] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space" in JENKINS?

我一直在 Jenkins 上构建 GWT war 文件。在特定的 "job" 中,我遇到了一个错误 [ERROR] Exception in thread "main" java.lang.OutOfMemoryError: Java heap space。作为解决方案,我包含了一个值为 -Xms512m -Xmx1024m -XX:MaxPermSize=512m 的环境变量 "MAVEN_OPTS"。仅供参考,我还尝试了 'echo' MAVEN_OPTS 命令提示符,它显示的值与我在环境变量中给出的值相同。

pom.xml 中的 MAVEN 编译器插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
    <source>1.7</source>
    <target>1.7</target>
    <showDeprecation>true</showDeprecation>
    <showWarnings>true</showWarnings>
    <executable>${env.JAVA_HOME}/bin/javac</executable>
    <fork>true</fork>
    <verbose>true</verbose>
    <encoding>UTF-8</encoding>
    </configuration>
</plugin>

**完整错误:**

[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:51.518s
[INFO] Finished at: Thu Jan 29 13:06:25 IST 2015
[INFO] Final Memory: 17M/989M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.codehaus.mojo:gwt-maven-              plugin:2.4.0:compile
(default) on project dpgwtwebapplication: Command [[
[ERROR] C:\Program Files\Java\jdk1.7.0_04\jre\bin\java -Xmx512m -classpath    "C:\U

同样在 mvn.bat 文件中,MAVEN_OPTS 的值显示为 -Xmx512m,您可以在最后的完整错误中注意到。

问题是您正在按照 maven-compiler-plugin 中的配置分叉编译器。您应该像下面这样定义内存参数:

<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.2</version>
        <configuration>
          <fork>true</fork>
          <meminitial>128m</meminitial>
          <maxmem>512m</maxmem>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>

我想问题不是 java 编译过程的内存减少,而是 gwt 编译器的内存减少。在这里显着增加内存: org.codehaus.mojo gwt-maven-插件 ...

参见:Codehaus.org gwt plugin usage