web-dev-qa-db-fra.com

Android Note: Qu'est-ce que javaMaxHeapSize "4g"?

Dans un fichier Android projet, ) build.gradle , j'ai parcouru cette ligne.

dexOptions{
    javaMaxHeapSize "4g"
}

Je voudrais savoir le but exact de ceci javaMaxHeapSize et que signifie-t-il 4g. Quelles sont les autres valeurs que je peux donner?

38
Kamalakannan J

Comme indiqué dans le réponse ci-dessus , il ne s'agit que d'une option permettant de spécifier le pool d'allocation de mémoire maximal pour un Java machine virtuelle (JVM) pour le fonctionnement dex). les mêmes que pour fournir à Java le -xmx argument. En raison de ses codes sources provenant de ici , il a la configuration suivante:

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 doit correspondre à la valeur \d+[kKmMgGtT]? modèle, et donc pas, il fait même référence à la man Java pour savoir comment régler le -xmx. Vous pouvez lire la page de manuel ici . Et il est dit que ce drapeau:

Spécifiez la taille maximale, en octets, du pool d'allocation de mémoire. Cette valeur doit être un multiple de 1024 supérieur à 2 Mo. Ajoutez la lettre k ou K pour indiquer les kilo-octets, ou m ou M pour indiquer les mégaoctets. La valeur par défaut est choisie au moment de l'exécution en fonction de la configuration du système.

Dans votre exemple, 4g est de 4 gigaoctets et il s’agit d’une taille de segment maximale pour le fonctionnement de dex.

31
Stanislav

Il s'agit d'une option non documentée pour augmenter la taille de segment de mémoire pour l'opération dex: https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ

7
Scadge

c'est le maximum de Ram que Gradle peut utiliser lors de la création de la construction (fichier apk). Cela peut être changé en fonction de la structure et de la taille du projet, il est toujours sûr d’avoir au moins "4g" RAM autorisé, mais nous devons aussi parfois l’élever comme si nous voulions utiliser minifyEnabled true ou - shrinkResources true indicateur dans le dégradé pour la version validée

0
Sahil