web-dev-qa-db-ja.com

ビルド失敗Java.lang.OutOfMemoryError:Javaヒープスペース

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)
24
vibhas

より大きなメモリ制限でJVMを起動する必要があるようです。次のようなものを試してください(Bourne Shellを使用している場合):

export ANT_OPTS=-Xmx1g
ant

または、Windowsでcmdを使用する場合:

set ANT_OPTS=-Xmx1g
ant

の上に 1gは1 GBを意味します。好きなように微調整できます。たとえば、1.5 GBを使用する場合は、-Xmx1536m

56

(<<Java 8の場合、permgenはJava 8以上)には適用されません)

エラーメッセージで「PermGen」という単語を使用して同様のトレースを取得したユーザーのために、

Java.lang.OutOfMemoryError: PermGen space

ANT_OPTSのperm-geanスペースを増やすと(好ましくは、必ずしも最大ヒープサイズと一緒ではないが)、問題を解決するはずです。

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

必要に応じて数値を調整します。

乾杯!

12
Yazad

Forkオプションで「javac」タスクを使用する場合、javacは独自のプロセスで実行され、「memoryinitialsize」および「memorymaximumsize」を使用してメモリをjavacに直接割り当てる必要があります。

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

\ build-tools\versions\dx.batにあるdx.batファイルで、ANT_OPTSを次に高いレベルに設定する必要があります。 set defaultXmx = -Xmx2048M 2GBに設定します。

0
Ramesh Yankati