Android Gradle: qu'est-ce que javaMaxHeapSize "4g"?

dans un projet android, build.Grad fichier, j'ai été à travers cette ligne

dexOptions{
    javaMaxHeapSize "4g"
}

je voudrais connaître le but exact de ce javaMaxHeapSize et ce que signifie 4g . Quelles sont les autres valeurs que je peux donner ?

32
demandé sur Kamalakannan J 2015-11-17 09:21:58

3 réponses

comme il est mentionné dans la réponse ci-dessus , c'est juste une option pour spécifier le pool d'allocation de mémoire maximum pour une Machine virtuelle Java (JVM) pour l'opération dex. Et c'est la même chose que de fournir à java l'argument -xmx . En raison de ses codes source de ici , il ressemble à setter:

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

ainsi, vous pouvez voir, que la valeur acceptée devrait correspondre au \d+[kKmMgGtT]? modèle, et donc pas, il même se réfère au man java pour apprendre à connaître, comment définir le -xmx . Vous pouvez lire la page de manuel ici . Et il est dit que ce drapeau:

spécifie la taille maximale, en octets, du pool d'attribution de mémoire. Cette valeur doit être un multiple de 1024 supérieur à 2MB. Ajoutez la lettre k ou K pour indiquer les kilooctets, ou m ou M pour indiquer les mégaoctets. La valeur par défaut est choisie à l'exécution en fonction de la configuration du système.

dans votre exemple, 4g est de 4 gigaoctets et c'est une taille de tas maximum pour l'opération dex.

27
répondu Stanislav 2017-05-23 10:30:45

c'est une option non documentée pour augmenter la taille du tas pour l'opération dex: https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ

7
répondu Scadge 2015-11-17 06:27:42
dexOptions{
    javaMaxHeapSize "4g"
}

après avoir écrit ceci dans build.gradle allez à gradle.properties et activez cette ligne:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
-2
répondu Amit Kumar Tiwari 2017-05-27 11:37:14