web-dev-qa-db-fra.com

comment définir Java_OPTS pour Tomcat sous Windows?

J'essaie de définir Java_OPTS pour Tomcat sur une machine Windows, mais je continue à avoir une erreur si j'ajoute plus d'une variable.

Par exemple, cela fonctionne:

set Java_OPTS="-Xms512M"

Mais cela ne veut pas:

set Java_OPTS="-Xms512M -Xmx1024M"

Il en résulte l'erreur:

Invalid initial heap size: -Xms512M -Xmx1024M
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

C'est comme si je peux définir une variable (-Xmx fonctionnera également) mais pas plusieurs.

J'utilise le fichier setenv.bat instruit et mon Tomcat est 7.0.35.

24
wannabeartist

Apparemment, le bon formulaire est sans le ""

Un péché

set Java_OPTS=-Xms512M -Xmx1024M
32
wannabeartist

Pour Windows, si la valeur de la variable contient un espace (""), la méthode correcte consiste à placer des guillemets (") avant le nom de la variable, comme suit:

set "Java_OPTS=-Xms512M -Xmx1024M"
24
Gaurav Fotedar

Essayer 

set Java_OPTS=%Java_OPTS% -Xms512M -Xmx1024M
9
user2550946

J'aime mieux combiner la réponse de Gaurav et celle de user2550946, mais j'aimerais ajouter deux aspects supplémentaires: 

  1. N'utilisez pas Java_OPTS, utilisez plutôt CATALINA_OPTS. Cela ne sera utilisé que pour démarrer Tomcat, pas pour l'éteindre. Généralement, vous souhaitez disposer de plus de mémoire lors du démarrage de Tomcat, mais le processus d'arrêt (qui accélère, ordonne à Tomcat de s'arrêter puis de se terminer à nouveau) n'a pas besoin de ressources spécialement ajustées. En fait, l’arrêt peut même échouer si une quantité ridicule de mémoire n’est plus disponible à partir du système d’exploitation. 

  2. Sur les systèmes de production, je recommande de réclamer immédiatement le maximum de mémoire autorisée. Parce que si vous prévoyez que la mémoire sera nécessaire tôt ou tard, vous ne voulez pas découvrir qu’elle n’est pas disponible à 3 heures du matin - au lieu de démarrer le serveur. Ainsi, définissez -Xmx et -Xms sur la valeur same dans les systèmes de production. (Cela rend mon aspect 1 encore plus pertinent)

Ou, en une ligne, voici ma recommandation:

set "CATALINA_OPTS=%CATALINA_OPTS% -Xms1024M -Xmx1024M"
8
Olaf Kock

Il est recommandé de créer un fichier nommé setenv.bat et de le placer dans le répertoire bin Tomcat. Avec ce fichier (qui est exécuté par les scripts catalina.bat et catalina.sh), vous pouvez modifier les paramètres d'environnement Tomcat suivants à l'aide de la variable Java_OPTS:

Vous pouvez définir la taille minimale et maximale de la mémoire mémoire avec les touches  

Paramètres JVM -Xms et -Xmx

Les meilleures limites dépendent de nombreuses conditions, telles que les transformations que Integrator ETL doit exécuter. Pour les transformations Information Discovery, 1 Go maximum est recommandé. Par exemple, pour définir la taille de segment minimale sur 128 Mo et la taille maximale de segment sur 1024 Mo, utilisez

Java_OPTS=-Xms128m -Xmx1024m        

Vous devez définir la limite maximale de l’espace mémoire PermGen (génération permanente) sur une taille supérieure à celle par défaut. La valeur par défaut de 64 Mo ne suffit pas pour les applications d'entreprise. Une limite de mémoire appropriée dépend de divers critères, mais 256 Mo seraient un bon choix dans la plupart des cas. Si le nombre maximal d'espaces PermGen est trop faible, OutOfMemoryError: des erreurs d'espace PermGen peuvent se produire. Vous pouvez définir la limite maximale de PermGen avec le paramètre JVM suivant.

    -XX:MaxPermSize=256m

Pour des raisons de performances, il est recommandé d’exécuter l’application en mode serveur. Apache Tomcat ne s'exécute pas en mode serveur par défaut. Vous pouvez définir le mode Serveur à l'aide du paramètre JVM -server. Vous pouvez définir le paramètre JVM dans la variable Java_OPTS de la variable d'environnement du fichier setenv.

The following is an example of a setenv.bat file:

set "Java_OPTS=%Java_OPTS% -Xms128m -Xmx1024m -XX:MaxPermSize=256m -server"
4
Harsh

En effet, la quantité de mémoire que vous souhaitez affecter à la machine virtuelle Java n'est pas disponible ou peut-être attribuez-vous plus que de la mémoire disponible. Essayez de petite taille alors vous pouvez voir la différence.
Essayer:

set Java_OPTS=-Xms128m -Xmx512m -XX:PermSize=128m
1
hourago
SET Java_HOME=C:\Applications\Java\java_8
SET PATH=%PATH%;C:\Applications\Java\java_8\bin
SET Java_OPTIONS=-d64 -Xms128g -Xmx128g
0
TIMS