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 ?
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.
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
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