Android Gradle: ¿Qué es javaMaxHeapSize “4g”?

En un proyecto android, archivo build.gradle , he pasado por esta línea

dexOptions{ javaMaxHeapSize "4g" } 

Me gustaría saber el propósito exacto de este javaMaxHeapSize y qué significa eso 4g . ¿Qué otros valores puedo dar?

Como se menciona en la respuesta anterior , es solo una opción para especificar el grupo máximo de asignación de memoria para una máquina virtual Java (JVM) para la operación dex. Y es lo mismo, proporcionar a java el argumento -xmx . Debido a sus códigos fuente de aquí , es setter look like:

 if (theJavaMaxHeapSize.matches("\\d+[kKmMgGtT]?")) { javaMaxHeapSize = theJavaMaxHeapSize } else { throw new IllegalArgumentException( "Invalid max heap size DexOption. See `man java` for valid -Xmx arguments.") } 

Entonces, ¿puedes ver que el valor aceptado debe coincidir con el \d+[kKmMgGtT]? patrón, y por lo tanto no, incluso se refiere al man java para conocer, cómo configurar el -xmx . Puedes leer la página del manual aquí . Y dice, que esta bandera:

Especifique el tamaño máximo, en bytes, del grupo de asignación de memoria. Este valor debe ser un múltiplo de 1024 mayor que 2 MB. Agregue la letra k o K para indicar kilobytes, o m o M para indicar megabytes. El valor predeterminado se elige en el tiempo de ejecución en función de la configuración del sistema.

En su ejemplo, 4g es 4 Gigabytes y este es un tamaño máximo de almacenamiento dynamic para la operación dex.

Esta es una opción no documentada para boost el tamaño de almacenamiento dynamic para la operación dex: https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ

 dexOptions{ javaMaxHeapSize "4g" } 

después de escribir esto en build.gradle vaya a gradle.properties y habilite esta línea:

 org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8