1219 votes

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

Veuillez expliquer l'utilisation de la Xms y Xmx dans les JVM. Quelles sont les valeurs par défaut de ces paramètres ?

2 votes

Lors de l'utilisation de -Xmx128m -Xms64m il peut culminer autour de 275m RES mem, mais en utilisant -Xmx128m -Xms128m il peut culminer autour de 550m RES mem avec Java 8 La meilleure chose à faire est de stresser le GC et de regarder ce qui se passe ...

3 votes

Par simple curiosité, les 275m et 550m - Comment ont-ils été calculés ?

1587voto

hexacyanide Points 15723

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

Cela signifie que votre JVM sera démarrée avec Xms de la mémoire et pourra utiliser un maximum de Xmx la quantité 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

El Xms n'a pas de valeur par défaut, et Xmx a généralement une valeur par défaut de 256 Mo. Une utilisation courante de ces drapeaux est lorsque vous rencontrez une java.lang.OutOfMemoryError .

Lorsque vous utilisez ces paramètres, gardez à l'esprit qu'ils sont destinés à la JVM amas et que la JVM peut utiliser et utilisera plus de mémoire que la seule taille allouée au tas. Extrait de La documentation d'Oracle :

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.

16 votes

Est-ce que c'est comme si lorsque l'utilisation de la mémoire dépasse Xmx, nous obtenons une exception de jvm out of memory.

68 votes

Oui, c'est exact. Quand il essaie de dépasser cela, bien qu'il puede collecter les déchets pour essayer de libérer suffisamment de mémoire. S'il n'y a toujours pas assez de mémoire pour satisfaire la demande et que le tas a déjà atteint sa taille maximale, un message d'erreur est envoyé à l'utilisateur. OutOfMemoryError se produira.

2 votes

Lorsque j'utilise le framework ForkJoin, mon ordinateur se bloque parce qu'il consomme trop de mémoire. Est-il possible que la mémoire ne soit pas limitée par défaut dans OpenJDK ?

355voto

Rupesh Yadav Points 2721

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

C:\Users\Admin>java -X
-Xmixed           mixed mode execution (default)
-Xint             interpreted mode execution only
-Xbootclasspath:<directories and zip/jar files separated by ;>
                      set search path for bootstrap classes and resources
-Xbootclasspath/a:<directories and zip/jar files separated by ;>
                      append to end of bootstrap class path
-Xbootclasspath/p:<directories and zip/jar files separated by ;>
                      prepend in front of bootstrap class path
-Xdiag            show additional diagnostic messages
-Xnoclassgc       disable class garbage collection
-Xincgc           enable incremental garbage collection
-Xloggc:<file>    log GC status to a file with time stamps
-Xbatch           disable background compilation
-Xms<size>        set initial Java heap size.........................
-Xmx<size>        set maximum Java heap size.........................
-Xss<size>        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 de nombreuses autres choses qui comptent le plus :)

22voto

Abner Niu Points 141

"Cela signifie que votre JVM sera démarrée avec une quantité de mémoire de Xms et pourra utiliser une quantité de mémoire maximale de Xmx."

ce n'est pas exact !-Xms signifie la taille de départ du Heap et -Xmx signifie la taille maximale du Heap ,pas toute la mémoire que la JVM utilise.

20voto

Vous pouvez le spécifier dans votre IDE. Par exemple, pour Eclipse, dans Configurations d'exécution arguments VM . Vous pouvez saisir -Xmx800m -Xms500m comme

Enter image description here

0 votes

Dans RubyMine sous OSX, c'est dans le menu Aide > Editer les options de VM personnalisées.

19 votes

Cela ne répond pas à la question. La question est de savoir à quoi ils servent, pas comment les régler.

0 votes

@Hearen Comment faire un sep up dans intellij ??

14voto

Abhishek Aich Points 31

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.

Conformément à 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.

8 votes

Pour les autres JVM (en dehors de JRockit), consultez ce post pour déterminer les valeurs Xmx/Xms par défaut de votre JVM : stackoverflow.com/questions/4667483/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X