Quels sont les parameters Xms et Xmx lors du démarrage des JVM?

Veuillez expliquer l’utilisation des Xms et Xmx dans les machines virtuelles Java. Quelles sont les valeurs par défaut pour eux?

L’indicateur Xmx spécifie le pool d’allocation de mémoire maximale 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 Xms et pourra utiliser un maximum de mémoire Xmx . Par exemple, démarrer une machine virtuelle Java comme ci-dessous le démarrera 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é dans plusieurs tailles, telles que kilo-octets, mégaoctets, etc.

 -Xmx1024k -Xmx512m -Xmx8g 

L’indicateur Xms n’a pas de valeur par défaut et Xmx généralement une valeur par défaut de 256 Mo. Une utilisation courante de ces indicateurs est lorsque vous rencontrez une java.lang.OutOfMemoryError .

Lorsque vous utilisez ces parameters, gardez à l’esprit que ces parameters concernent le segment de mémoire de la machine virtuelle Java et que la machine virtuelle Java peut / va utiliser davantage de mémoire que la taille allouée au segment de mémoire. De la documentation d’Oracle :

Notez que la machine virtuelle Java utilise plus de mémoire que le segment de mémoire. Par exemple, les méthodes Java, les stacks de threads et les descripteurs natifs sont alloués en mémoire séparément du segment de mémoire, ainsi que les structures de données internes de la JVM.

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 ssortingctest 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 ne sont pas standard et peuvent être modifiées sans préavis.

J’espère que cela vous aidera à comprendre Xms, Xmx et bien d’autres choses qui comptent le plus. 🙂

Vous pouvez le spécifier dans votre IDE. Par exemple, pour Eclipse dans Run ConfigurationsArguments VM . Vous entrez -Xmx800m -Xms500m :

Entrez la description de l'image ici

La partie principale de la question a déjà été abordée ci-dessus. Il suffit d’append 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épendra de la plate-forme et de la quantité de mémoire disponible dans le système.