On Android: java.lang.OutOfMemoryError: Java heap space

Issue #29 resolved
Former user created an issue

I had an earlier version of symja used in one of my android applications. and it works fine. the one of symja-2014-01-19.jar gives me this error no matter i increase the memory size for the compiler's sake.

The error:

 [dex] Pre-Dexing /home/oracle/eclipse-workspace/GeneralEngineeringPaid3/libs/symja-2014-01-19.jar -> symja-2014-01-19-eb0b0a9bc2f8a1ea51f318700fda8898.jar
       [dx] 
       [dx] UNEXPECTED TOP-LEVEL ERROR:
       [dx] java.lang.OutOfMemoryError: Java heap space
       [dx]     at java.util.BitSet.initWords(BitSet.java:144)
       [dx]     at java.util.BitSet.<init>(BitSet.java:139)
       [dx]     at com.android.dx.ssa.SsaMethod.bitSetFromLabelList(SsaMethod.java:137)
       [dx]     at com.android.dx.ssa.SsaBasicBlock.newFromRop(SsaBasicBlock.java:157)
       [dx]     at com.android.dx.ssa.SsaMethod.convertRopToSsaBlocks(SsaMethod.java:173)
       [dx]     at com.android.dx.ssa.SsaMethod.newFromRopMethod(SsaMethod.java:103)
       [dx]     at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:44)
       [dx]     at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:98)
       [dx]     at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:72)
       [dx]     at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:299)
       [dx]     at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:139)
       [dx]     at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:94)
       [dx]     at com.android.dx.command.dexer.Main.processClass(Main.java:682)
       [dx]     at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
       [dx]     at com.android.dx.command.dexer.Main.access$600(Main.java:78)
       [dx]     at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
       [dx]     at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
       [dx]     at com.android.dx.command.dexer.Main.processOne(Main.java:596)
       [dx]     at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
       [dx]     at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
       [dx]     at com.android.dx.command.dexer.Main.run(Main.java:230)
       [dx]     at com.android.dx.command.dexer.Main.main(Main.java:199)
       [dx]     at com.android.dx.command.Main.main(Main.java:103)

Comments (5)

  1. Axel Kramer repo owner

    I'm using these settings. Could you please try if it works for you?

    --launcher.XXMaxPermSize

    256M

    -showsplash

    org.eclipse.platform

    --launcher.XXMaxPermSize

    256m

    --launcher.defaultAction

    openFile

    -vmargs

    -Dosgi.requiredJavaVersion=1.6

    -Dhelp.lucene.tokenizer=standard

    -Xms256m

    -Xmx1024m

  2. Axel Kramer repo owner

    With the ANT script

    /symja_android_library/build.xml

    you can compress the library with proguard and use the created JAR

    symja_android_library\symja_android_library\build\jar\symja-mini-2014-xx-xx.jar

    Problem is that at the moment some method names are obfuscated by this script.

  3. Log in to comment