Maven: 内存溢出错误 - 堆空间

10
问题: 我在运行mvn clean install -DskipTest时出现了以下错误信息。
[ERROR] The system is out of resources.
[ERROR] Consult the following stack trace for details.
[ERROR] java.lang.OutOfMemoryError: Java heap space

更多信息:

  • 操作系统:OS X(16 GB RAM)

  • Java配置:位于〜/ Libraries / Preferences / IntelliJIdea13 / idea.vmoptinsApplications / IntelliJ \ Idea \ 13.app / bin / idea.vmoptions

    -Xms256m -Xmx2048m -XX:MaxPermSize = 1024m -XX:ReservedCodeCacheSize = 256m -XX:+ UseCompressedOops

  • MAVEN_OPTS: export MAVEN_OPTS ="-Xmx2048M -XX:PermSize = 92M -XX:MaxPermSize = 384M"位于〜/ .bash_profile

  • Intellij Idea Maven opts: -xms256m -xmx2048 -XX:MaxPermSize = 1024M 。我设置它们在默认设置 - > MAven - > Runner - > VM Options

问题: 如何解决?

堆栈跟踪:

[ERROR] The system is out of resources.
[ERROR] Consult the following stack trace for details.
[ERROR] java.lang.OutOfMemoryError: Java heap space
[ERROR] at com.sun.tools.javac.util.Position$LineMapImpl.build(Position.java:139)
[ERROR] at com.sun.tools.javac.util.Position.makeLineMap(Position.java:63)
[ERROR] at com.sun.tools.javac.parser.Scanner.getLineMap(Scanner.java:1113)
[ERROR] at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:512)
[ERROR] at com.sun.tools.javac.main.JavaCompiler.parse(JavaCompiler.java:550)
[ERROR] at com.sun.tools.javac.main.JavaCompiler.parseFiles(JavaCompiler.java:804)
[ERROR] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:727)
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:353)
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:279)
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:270)
[ERROR] at com.sun.tools.javac.Main.compile(Main.java:87)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:597)
[ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.compileInProcess(JavacCompiler.java:554)
[ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.compile(JavacCompiler.java:161)
[ERROR] at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:605)
[ERROR] at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:128)
[ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)
[ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
[ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537)
[ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
[ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
[ERROR] -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project com.conductor.thrift.client: Compilation failure
Failure executing javac, but could not parse the error:

请使用“-e”运行它并发布错误堆栈。 - jmj
它在哪个阶段耗尽了内存?是Maven编译器插件还是测试。 - ssedano
@ssedano在其中一个模块上工作。这意味着已经构建了几个子模块,但在下一个模块中失败了。 - VB_
请执行 $ echo $MAVEN_OPTS 以确保其已加载。如果没有,请尝试运行 $ MAVEN_OPTS="-xms256m -xmx2048 -XX:MaxPermSize=1024M" mvn clean install -DskipTest - ssedano
@ssedano echo $MAVEN_OPTS 返回 -Xmx2048M -XX:PermSize=92M -XX:MaxPermSize=384M - VB_
显示剩余3条评论
1个回答

14

如果根据上面的注释,Java编译器插件会耗尽内存,为了解决这个问题,您需要为Java编译器插件提供更多的内存。您可以在pom.xml文件中添加以下代码:

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接