【问题标题】:Java heap space OutOfMemoryError when binding a .jar in Xamarin在 Xamarin 中绑定 .jar 时出现 Java 堆空间 OutOfMemoryError
【发布时间】:2014-04-29 14:33:09
【问题描述】:

按照 Xamarin 站点上的步骤 Binding a Java Library 为 ArcGIS for Android 10.2.2 创建绑定项目时,我能够编译该项目。但是,当我尝试部署和运行项目时,出现以下错误:

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)

【问题讨论】:

    标签: c# xamarin.android xamarin dalvik


    【解决方案1】:

    更新: 正如Blueberry 所说,您现在可以通过 Xamarin/Visual Studio 编辑器编辑此选项:

    在 Xamarin Studio 中,您现在可以转到:

    项目选项 > 构建 > Android 构建 > 高级(选项卡)

    在 Visual Studio 中,您现在可以转到:

    项目属性 > Android 选项 > 高级(选项卡)

    您会在此处找到 Java Heap Size,您可以将其设置为 1G。

    在 Xamarin 4.6 及更高版本中,您可以指定 Java 最大堆大小 (JavaMaximumHeapSize),它允许您覆盖“default java heapsize which is sometimes too low to compile some .jar files.

    要指定值,请编辑 Android 项目(不是绑定项目)的 .csproj 并将其添加到顶部(其中 1G 是您要设置的值)

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

    有关更多信息,请参阅 Xamarin 论坛上的 this thread

    【讨论】:

      【解决方案2】:

      在 Xamarin Studio 中,您现在可以转到:

      项目选项 > 构建 > Android 构建 > 高级(选项卡)

      在 Visual Studio 中,您现在可以转到:

      项目属性 > Android 选项 > 高级(选项卡)

      您会在此处找到 Java Heap Size,您可以将其设置为 1G。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-08-08
        • 2018-06-09
        • 1970-01-01
        相关资源
        最近更新 更多