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.
2 votes
Lors de l'utilisation de
-Xmx128m -Xms64m
il peut culminer autour de275m
RES mem, mais en utilisant-Xmx128m -Xms128m
il peut culminer autour de550m
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 ?