Comment définir la taille de segment minimale et maximale de Java à l'aide de variables d'environnement?

StackOverflow https://stackoverflow.com/questions/417152

Question

Comment définir la taille de segment minimale et maximale de Java à l'aide de variables d'environnement?

Je sais que les tailles de segment de mémoire peuvent être définies lors du lancement de Java, mais j'aimerais que cela soit ajusté à l'aide de variables d'environnement sur mon serveur.

Était-ce utile?

La solution

Vous ne pouvez pas le faire en utilisant directement des variables d’environnement. Vous devez utiliser le jeu de " non standard " options transmises à la commande java. Exécuter: java -X pour plus de détails. Les options que vous recherchez sont -Xmx et -Xms (il s'agit de la "taille" initiale du segment de mémoire, donc probablement de ce que vous recherchez.)

Certains produits tels que Ant ou Tomcat peuvent être livrés avec un script de traitement par lots qui recherche la variable d’environnement JAVA_OPTS, mais cela ne fait pas partie du runtime Java. Si vous utilisez l'un de ces produits, vous pouvez éventuellement définir une variable telle que:

set JAVA_OPTS="-Xms128m -Xmx256m"  

Vous pouvez également adopter cette approche avec votre propre ligne de commande, telle que:

set JAVA_OPTS="-Xms128m -Xmx256m"  
java ${JAVA_OPTS} MyClass

Autres conseils

Si vous souhaitez qu'un processus java , pas seulement ant ou Tomcat, sélectionne des options telles que -Xmx , utilisez la variable d'environnement _JAVA_OPTIONS .

In bash: exportation _JAVA_OPTIONS = "-Xmx1g"

En fait, il existe un moyen de définir des valeurs globales par défaut pour la machine virtuelle Java de Sun via des variables d'environnement.

Voir Comment définir une propriété système Java afin qu'elle soit effective à chaque démarrage de la machine virtuelle Java sans l'ajouter aux arguments de ligne de commande .

Vous ne pouvez pas le faire en utilisant des variables d'environnement. Cela se fait via " non standard " options. Exécutez: java -X pour plus de détails. Les options que vous recherchez sont -Xmx et -Xms (il s'agit de la taille initiale du segment de mémoire, donc probablement de ce que vous recherchez.)

Je pense que votre seule option est d’envelopper Java dans un script qui substitue les variables d’environnement à la ligne de commande

Quelques notes:

  1. Apache Ant ne connaît rien de JAVA_OPTS, contrairement aux scripts de démarrage de Tomcat. Pour Apache ant, utilisez ANT_OPTS pour modifier l’environnement de la machine virtuelle Java exécutant / ant /, mais pas les éléments pouvant être lancés par ant.

  2. La taille de segment de mémoire maximale que vous pouvez définir dépend entièrement de l'environnement: pour la plupart des systèmes 32 bits, la quantité maximale d'espace de segment de mémoire que vous pouvez demander, quelle que soit la mémoire disponible, est comprise dans la plage de 2 Go. Le plus gros segment sur un système 64 bits est "très gros". En outre, vous êtes pratiquement limité par la mémoire physique, car le segment de mémoire est géré par la machine virtuelle et que vous ne souhaitez pas beaucoup de permutation sur le disque.

  3. Pour les environnements de serveur, vous souhaitez généralement définir la même valeur sur -Xms et -Xmx: cela fixera la taille du segment de mémoire à une certaine taille et le récupérateur de mémoire aura moins de travail à faire car le segment de mémoire ne jamais avoir à redimensionner.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top