Etiqueta: Visual Studio

java.lang.OutOfMemoryError: Java heap space en Visual Studio con Xamarin

Al desarrollar una app en Visual Studio, aprovechando las ventajas de la nueva y gratuita integración con Xamarin, el compilador nos puede arrojar eventualmente un error del tipo

java.lang.OutOfMemoryError: Java heap space .

Esto ocurre básicamente porque se excede el máximo de memoria alojada (allocated memory) de la pila de instrucciones (heap memory), lo que se puede resolver de dos formas: la primera es colocar un parámetro en tiempo de compilación que aumente ese espacio a 1 Gb o más, y la segunda es cambiar el JDK con el que se esta compilando, ya que por defecto se toma la versión de 32 bits del mismo, y el JDK disponible de 64 bits tiene mayores optimizaciones y licencias que esta versión, por ende, hay que remplazarla.




Remplazar el JDK de 32 bits por el de 64 bits

1. Descargarse e instalar la última versión del JDK de 64 bits.

2. En Visual Studio, ir a Herramientas -> Opciones y luego a Xamarin -> Configuración de Android.

3. En el apartado Java Development Kit Location veremos que la ruta a la que dirige es el JDK de 32 bits. Hacemos clic en Change.

4. En la ventana que se abre, hacemos clic en el botón con los tres puntos para cambiar la ruta del JDK y elegimos la ruta donde se instaló el JDK de 64 bits que descargamos previamente. Normalmente la ruta es C:\Program Files\Java\jdkxxxxx (donde xxxxx es la versión instalada).

5. Aceptamos los cambios, reiniciamos Visual Studio y al volver a compilar veremos que la prueba si pasa.

Compilar con el SDK de 64 bits no afecta en nada a la ejecución de las apps en dispositivos de procesadores arm, x86 o x64, ya que recordemos que las apps se precompilan en este punto y se terminan de compilar en el dispositivo del usuario final.




Deshabilitar Warnings de depreciación en Visual Studio

Visual Studio no solo es una de las herramientas de desarrollo mas avanzadas en el mercado, también es una plataforma llena de “soluciones propias” a ciertos problemas existentes en otras herramientas o plataformas de desarrollo.

Particularmente, en C y C++, existen versiones tanto oficiales como no oficiales de dichos lenguajes, así como compiladores que pueden provocar resultados inesperados al cambiar de uno a otro sin tener un código estándar. Es así como en ciertas oportunidades, al tener que editar un código fuente de algún programa hecho para “otro compilador”, aunque del mismo lenguaje, nos encontraremos con que el compilador derechamente o no compilara lanzando varios errores, o enviara varios warnings, muchos de estos últimos, innecesarios.

Leer más →