Que sont les paramètres -Xms et -Xmx lors du démarrage de la JVM ?

Veuillez expliquer l'utilisation des paramètres Xms et Xmx dans les JVMs. Quelles sont les valeurs par défaut de ces paramètres ?

Solution

L'indicateur Xmx spécifie le pool d'allocation de mémoire maximum pour une machine virtuelle Java (JVM), tandis que Xms spécifie le pool d'allocation de mémoire initial.

Cela signifie que votre JVM sera démarrée avec une quantité de mémoire de Xms et sera capable d'utiliser un maximum de Xmx de mémoire. Par exemple, le démarrage d'une JVM comme ci-dessous la fera démarrer avec 256 Mo de mémoire et permettra au processus d'utiliser jusqu'à 2048 Mo de mémoire :

java -Xms256m -Xmx2048m

L'indicateur de mémoire peut également être spécifié en différentes tailles, comme les kilo-octets, les méga-octets, etc.

-Xmx1024k
-Xmx512m
-Xmx8g

L'indicateur Xms n'a pas de valeur par défaut, et Xmx a généralement une valeur par défaut de 256 Mo. Ces indicateurs sont souvent utilisés lorsque vous rencontrez une java.lang.OutOfMemoryError.

Lorsque vous utilisez ces paramètres, gardez à l'esprit qu'ils concernent le heap de la JVM, et que la JVM peut utiliser ou utilisera plus de mémoire que la seule taille allouée au heap. Extrait de [la documentation d'Oracle][1] :

Notez que la JVM utilise plus de mémoire que le simple tas. Par exemple, les méthodes Java, les piles de threads et les handles natifs sont alloués dans une mémoire distincte du tas, tout comme les structures de données internes de la JVM.

[1] : http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/garbage_collect.html

Commentaires (9)

Exécutez la commande java -X et vous obtiendrez une liste de toutes les options -X :

C:\Users\Admin>java -X
-Xmixed           mixed mode execution (default)
-Xint             interpreted mode execution only
-Xbootclasspath:
                      set search path for bootstrap classes and resources
-Xbootclasspath/a:
                      append to end of bootstrap class path
-Xbootclasspath/p:
                      prepend in front of bootstrap class path
-Xdiag            show additional diagnostic messages
-Xnoclassgc       disable class garbage collection
-Xincgc           enable incremental garbage collection
-Xloggc:    log GC status to a file with time stamps
-Xbatch           disable background compilation
-Xms        set initial Java heap size.........................
-Xmx        set maximum Java heap size.........................
-Xss        set java thread stack size
-Xprof            output cpu profiling data
-Xfuture          enable strictest checks, anticipating future default
-Xrs              reduce use of OS signals by Java/VM (see documentation)
-Xcheck:jni       perform additional checks for JNI functions
-Xshare:off       do not attempt to use shared class data
-Xshare:auto      use shared class data if possible (default)
-Xshare:on        require using shared class data, otherwise fail.
-XshowSettings    show all settings and continue
-XshowSettings:all         show all settings and continue
-XshowSettings:vm          show all vm related settings and continue
-XshowSettings:properties  show all property settings and continue
-XshowSettings:locale      show all locale related settings and continue

Les options -X sont non standard et peuvent être modifiées sans préavis.

J'espère que cela vous aidera à comprendre Xms, Xmx ainsi que beaucoup d'autres choses qui comptent le plus :)

Commentaires (0)

La question elle-même a déjà été traitée ci-dessus. Je ne fais qu'ajouter une partie des valeurs par défaut.

Comme indiqué sur http://docs.oracle.com/cd/E13150_01/jrockit_jvm/jrockit/jrdocs/refman/optionX.html

La valeur par défaut de Xmx dépend de la plate-forme et de la quantité de mémoire disponible dans le système.

Commentaires (1)