Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java heap space OutOfMemoryError when binding a .jar in Xamarin

When following the steps on the Xamarin site for Binding a Java Library to create a binding project for the ArcGIS for Android 10.2.2 I am able to get the project compile. However, when I attempt to deploy and run the project I get the following error:

COMPILETODALVIK : UNEXPECTED TOP-LEVEL error :
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2760)
    at java.util.Arrays.copyOf(Arrays.java:2734)
    at java.util.ArrayList.ensureCapacity(ArrayList.java:167)
    at java.util.ArrayList.add(ArrayList.java:351)
    at com.android.dx.ssa.SsaMethod$2.addToUses(SsaMethod.java:474)
    at com.android.dx.ssa.SsaMethod$2.visitPhiInsn(SsaMethod.java:459)
    at com.android.dx.ssa.PhiInsn.accept(PhiInsn.java:323)
    at com.android.dx.ssa.SsaBasicBlock.forEachInsn(SsaBasicBlock.java:990)
    at com.android.dx.ssa.SsaMethod.forEachInsn(SsaMethod.java:729)
    at com.android.dx.ssa.SsaMethod.buildUseList(SsaMethod.java:452)
    at com.android.dx.ssa.SsaMethod.getUseListForRegister(SsaMethod.java:641)
    at com.android.dx.ssa.SCCP.addUsersToWorklist(SCCP.java:116)
    at com.android.dx.ssa.SCCP.simulateStmt(SCCP.java:538)
    at com.android.dx.ssa.SCCP.simulateBlock(SCCP.java:208)
    at com.android.dx.ssa.SCCP.run(SCCP.java:554)
    at com.android.dx.ssa.SCCP.process(SCCP.java:92)
    at com.android.dx.ssa.Optimizer.runSsaFormSteps(Optimizer.java:160)
    at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:100)
    at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:73)
    at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:273)
    at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:134)
    at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:87)
    at com.android.dx.command.dexer.Main.processClass(Main.java:487)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459)
    at com.android.dx.command.dexer.Main.access$400(Main.java:67)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109)
    at com.android.dx.command.dexer.Main.processOne(Main.java:422)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333)
    at com.android.dx.command.dexer.Main.run(Main.java:209)
like image 904
Steve Avatar asked Apr 29 '14 14:04

Steve


People also ask

How do I fix Java heap space error?

OutOfMemoryError: Java heap space. 1) An easy way to solve OutOfMemoryError in java is to increase the maximum heap size by using JVM options "-Xmx512M", this will immediately solve your OutOfMemoryError.

How do you resolve Outofmemoryexception in xamarin?

I would increase your build heap size. Right click your Android Project > Properties > Android Options > Advanced > Java Max Heap Size.

What causes Java Lang OutOfMemoryError Java heap space?

lang. OutOfMemoryError exception. Usually, this error is thrown when there is insufficient space to allocate an object in the Java heap. In this case, The garbage collector cannot make space available to accommodate a new object, and the heap cannot be expanded further.


2 Answers

Update: As Blueberry said, you can now edit this option through Xamarin/Visual Studio editors:

In Xamarin Studio, you can now go to:

Project Option > Build > Android Build > Advanced (tab)

In Visual Studio, you can now go to:

Project Properties > Android Options > Advanced (tab)

You will find Java Heap Size there, which you could set to 1G.

In Xamarin 4.6 and later you can specify the Java Maximum Heap Size (JavaMaximumHeapSize) which allows you to override the "default java heapsize which is sometimes too low to compile some .jar files."

To specify the value, edit the .csproj of the Android project (not the binding project) and add this at the top (where 1G is the value you'd like to set)

<PropertyGroup>
    <JavaMaximumHeapSize>1G</JavaMaximumHeapSize>
</PropertyGroup>

For additional information see this thread on the Xamarin forums.

like image 145
Steve Avatar answered Oct 17 '22 03:10

Steve


In Xamarin Studio, you can now go to:

Project Option > Build > Android Build > Advanced (tab)

In Visual Studio, you can now go to:

Project Properties > Android Options > Advanced (tab)

You will find Java Heap Size there, which you could set to 1G.

like image 42
Blueberry Avatar answered Oct 17 '22 01:10

Blueberry