1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

java.lang.OutOfMemoryError während des Builds

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von dereulenspiegel, 12.03.2010.

  1. dereulenspiegel, 12.03.2010 #1
    dereulenspiegel

    dereulenspiegel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    4
    Registriert seit:
    16.08.2009
    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?
     
  2. SirMArtin, 12.03.2010 #2
    SirMArtin

    SirMArtin freier Samsungsupporter

    Beiträge:
    113
    Erhaltene Danke:
    7
    Registriert seit:
    05.08.2009
    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
     
  3. garak, 14.03.2010 #3
    garak

    garak Ehrenmitglied

    Beiträge:
    8,270
    Erhaltene Danke:
    4,794
    Registriert seit:
    12.12.2009
    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
     
  4. dereulenspiegel, 14.03.2010 #4
    dereulenspiegel

    dereulenspiegel Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    4
    Registriert seit:
    16.08.2009
    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
     

Diese Seite empfehlen