Cómo solucionar "OutOfMemoryError: java heap space" al compilar la aplicación MonoDroid en MonoDevelop
Cuando intento compilar (no ejecuto) uno de mis proyectos, recibo recientemente el error siguiente:
Tool /usr/bin/java execution started with arguments: -jar /Applications/android-sdk-mac_x86/platform-tools/lib/dx.jar --no-strict --dex --output=obj/Debug/android/bin/classes.dex obj/Debug/android/bin/classes /Developer/MonoAndroid/usr/lib/mandroid/platforms/android-8/mono.android.jar FlurryAnalytics/Jars/FlurryAgent.jar Jars/android-support-v4.jar UNEXPECTED TOP-LEVEL ERROR: java.lang.OutOfMemoryError: Java heap space at com.android.dx.rop.code.RegisterSpecSet.<init>(RegisterSpecSet.java:49) at com.android.dx.rop.code.RegisterSpecSet.mutableCopy(RegisterSpecSet.java:383) at com.android.dx.ssa.LocalVariableInfo.mutableCopyOfStarts(LocalVariableInfo.java:169) at com.android.dx.ssa.LocalVariableExtractor.processBlock(LocalVariableExtractor.java:104) at com.android.dx.ssa.LocalVariableExtractor.doit(LocalVariableExtractor.java:90) at com.android.dx.ssa.LocalVariableExtractor.extract(LocalVariableExtractor.java:56) at com.android.dx.ssa.SsaConverter.convertToSsaMethod(SsaConverter.java:50) at com.android.dx.ssa.Optimizer.optimize(Optimizer.java:99) 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) at com.android.dx.command.dexer.Main.main(Main.java:174) at com.android.dx.command.Main.main(Main.java:91)
Otros proyectos se construyen como se esperaba. ¿Creo que necesito aumentar el tamaño del montón para este paso de la estructura de java? ¿Pero cómo?
- C # barra de progreso circular xamarin - Android
- No se puede crear una nueva aplicación en blanco (Android) en Visual Studio 2015
- Xamarin ZipAlign no encontrado
- Token de registro no registrado en Firebase
- ¿Es monodroid más lento?
- Comprobar la versión de Xamarin.Android mediante programación
- Xamarin archivo Android camino a largo
- ¿Incompatibilidades de la capa de servicio MonoTouch / MonoDroid?
- Desarrollar una aplicación C # para Windows Mobile, Android y iPhone
- Error MSB4185: "System.Globalization.CultureInfo" no se ha habilitado para la ejecución
- Android: EditText activa automáticamente el teclado, ¿cómo detenerlo?
- ¿Cuál es la forma correcta de implementar Fragments en MvvmCross 3.5.1
- "Aapt.exe" salió con el código 1 al crear el proyecto Mono para Android
Hay una opción en Xamarin Studio para aumentar el tamaño de Heap Java.
Opciones del proyecto -> Android Build -> Avanzado -> Java Heap Size.
Esta sugerencia hizo el truco:
$ export _JAVA_OPTIONS="-Xmx1g" $ /Applications/MonoDevelop.app/Contents/MacOS/MonoDevelop
Tengo unos pocos archivos jar en mi proyecto. Flurry, Maps y Newtonsoft … aparentemente esto es suficiente para bombardear la construcción.
Gracias al impresionante equipo de soporte de Xamarin por su rápida respuesta y señalando la solución! Están trabajando en la reducción de la huella de memoria necesaria para los frascos externos.
- Manejo de la pila posterior de fragmentos con el cajón de navegación
- Entendiendo el lanzador personalizado de Android