java.lang.OutOfMemoryError während des Builds

D

dereulenspiegel

Fortgeschrittenes Mitglied
4
Hallo,

ich versuche gerade meinen Buildprozess mit Hilfe von Hudson zu automatisieren. Dabei wird das Androidprojekt per Ant gebaut. Allerdings scheitert jeder Build mit folgender Fehlermeldung:
Code:
[apply] UNEXPECTED TOP-LEVEL ERROR:     [apply] java.lang.OutOfMemoryError: Java heap space     [apply] 	at java.util.ArrayList.(ArrayList.java:113)     [apply] 	at java.util.ArrayList.(ArrayList.java:120)     [apply] 	at com.android.dx.ssa.SsaBasicBlock.(SsaBasicBlock.java:94)     [apply] 	at com.android.dx.ssa.SsaBasicBlock.newFromRop(SsaBasicBlock.java:124)     [apply] 	at com.android.dx.ssa.SsaMethod.convertRopToSsaBlocks(SsaMethod.java:164)     [apply] 	at com.android.dx.ssa.SsaMethod.newFromRopMethod(SsaMethod.java:105)     [apply] 	at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:45)     [apply] 	at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:100)     [apply] 	at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:74)     [apply] 	at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:269)     [apply] 	at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:131)     [apply] 	at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:85)     [apply] 	at com.android.dx.command.dexer.Main.processClass(Main.java:297)     [apply] 	at com.android.dx.command.dexer.Main.processFileBytes(Main.java:276)     [apply] 	at com.android.dx.command.dexer.Main.access$100(Main.java:56)     [apply] 	at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:228)     [apply] 	at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)     [apply] 	at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:130)     [apply] 	at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)     [apply] 	at com.android.dx.command.dexer.Main.processOne(Main.java:245)     [apply] 	at com.android.dx.command.dexer.Main.processAllFiles(Main.java:183)     [apply] 	at com.android.dx.command.dexer.Main.run(Main.java:139)     [apply] 	at com.android.dx.command.dexer.Main.main(Main.java:120)     [apply] 	at com.android.dx.command.Main.main(Main.java:87)

Ich habe bereits versucht den Java Heap Space per ANT_OPTS anzuheben. Aber selbst mit über 1GB RAM gibt er sich nicht zufrieden. Ein manueller Build auf der Kommandozeile per Ant schlägt auf die selbe Weise fehl. Aber auf meinem lokalen Win7-System kann ich das Projekt ganz normal bauen. Hat jemand eine Idee woran das liegen könnte?
 
Wenn der [apply] Task einen eigenen Java-Task per fork startet, müssten ihm die -Xmx und -Xms Parameter übergeben werden.

EDIT:

das sieht stark nach einem eigenen Java-Task aus: at com.android.dx.command.Main.main
 
Du musst im Ant-Script den Speicher hoch setzen, der für den Build-Prozess dann zur Verfügung steht. Defaultmäßig bekommt er so um die 12 MB (hab's jetzt nicht genau im Kopf). Beispiel:

memoryInitialSize="256m"
memoryMaximumSize="512m"

Gruß
Chris
 
Hi!

Sorry, dass ich nicht mehr geantwortet habe. Stressige Woche. Habe das Problem bereits gelöst. Und zwar dx das Problem. Das ist nur ein Bashscript in dem nochmal zusätzliche JAVA_OPTS angeben kann. Wenn man das macht, funzt alles wunderbar. Jetzt werden meine Android-Apps schön automatisch von Hudson gebaut :D
 

Ähnliche Themen

A
Antworten
1
Aufrufe
630
swa00
swa00
H
Antworten
5
Aufrufe
1.104
heikoj10.1
H
J
  • JoEntwickler
Antworten
2
Aufrufe
645
JoEntwickler
J
Zurück
Oben Unten