【问题标题】:Build Failed java.lang.OutOfMemoryError: Java heap space构建失败 java.lang.OutOfMemoryError:Java 堆空间
【发布时间】:2011-11-21 15:14:04
【问题描述】:

我在构建 build.xml 时遇到了这个问题。

BUILD FAILED
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2786)
    at java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:94)
    at org.codehaus.cargo.module.DefaultJarArchive.<init>(DefaultJarArchive.
java:75)
    at org.codehaus.cargo.module.DefaultJarArchive.<init>(DefaultJarArchive.
java:56)
    at org.codehaus.cargo.module.webapp.DefaultWarArchive.<init>(DefaultWarA
rchive.java:69)
    at org.apache.cactus.integration.ant.CactifyWarTask.addJarWithClass(Cact
ifyWarTask.java:652)
    at org.apache.cactus.integration.ant.CactifyWarTask.addCactusJars(Cactif
yWarTask.java:627)
    at org.apache.cactus.integration.ant.CactifyWarTask.execute(CactifyWarTa
sk.java:519)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:62)
    at net.sf.antcontrib.logic.IfTask.execute(IfTask.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
    at org.apache.tools.ant.TaskAdapter.execute(TaskAdapter.java:154)
    at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288)
    at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.jav
a:106)
    at org.apache.tools.ant.Task.perform(Task.java:348)
    at org.apache.tools.ant.Target.execute(Target.java:357)
    at org.apache.tools.ant.Target.performTasks(Target.java:385)
    at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1337)
    at org.apache.tools.ant.Project.executeTarget(Project.java:1306)

【问题讨论】:

    标签: java ant build


    【解决方案1】:

    听起来您需要以更大的内存限制启动 JVM。尝试类似(如果您使用的是 Bourne shell):

    export ANT_OPTS=-Xmx1g
    ant
    

    或者,如果您在 Windows 下使用cmd

    set ANT_OPTS=-Xmx1g
    ant
    

    上面,1g 表示 1 GB。您可以将其调整为您喜欢的任何内容;例如,如果你想使用 1.5 GB,你可以使用-Xmx1536m

    【讨论】:

    • 我应该在哪里添加 set ANT_OPTS=-Xmx1g ant 是在 ant 脚本文件中吗??
    • 在输入 ant 之前运行该命令。我假设您正在从命令行运行ant。如果您从 IDE 运行 ant,您的 IDE 应该为您提供一种传递 Java 选项的方法。
    • 太棒了...非常感谢。但是有没有办法永久设置它?
    • 如果设置为环境变量,可以永久设置。所以在windows下的标准编辑器中添加环境变量(或者试试www.rapidee.com),或者在linux和mac下直接在~/.bashrc~/.profile中添加export这一行。
    【解决方案2】:

    如果'javac'任务与fork选项一起使用,javac将在自己的进程中运行,内存应该使用'memoryinitialsize'和'memorymaximumsize'直接分配给javac:

    javac   srcdir="${src}"
                destdir="${classes}"
                source="1.6"
                debug="true"
                fork="true"
                deprecation="off"
                memoryinitialsize="512m"
                memorymaximumsize="1024m"
    

    【讨论】:

      【解决方案3】:

      (对于

      为了那些在错误消息中使用“PermGen”一词获得类似跟踪的人的利益,

      java.lang.OutOfMemoryError: PermGen space
      

      增加 ANT_OPTS 中的 perm-gean 空间(最好,但不一定与最大堆大小一起)应该可以解决问题

      例子

      export ANT_OPTS="-Xmx2g -XX:MaxPermSize=512m"
      

      根据您的需要调整数字。

      干杯!

      【讨论】:

        【解决方案4】:

        您需要在 dx.bat 文件中将 ANT_OPTS 设置为下一个更高级别。该文件位于 \build-tools\versions\dx.bat。 设置 defaultXmx=-Xmx2048M 我设置为 2GB。

        【讨论】:

          猜你喜欢
          • 2010-12-08
          • 2015-05-14
          • 2019-07-10
          • 2019-12-12
          相关资源
          最近更新 更多