Configuration des paramètres de démarrage du JVM

Protector4J permet de configurer les paramètres de démarrage du JVM lors du packaging, ainsi que d’ajouter temporairement ou de modifier directement les scripts de démarrage générés après le déploiement. Pour consulter d’autres paramètres avancés dans la GUI, veuillez vous référer à Paramètres du mode avancé de Protector4J.

1. Trois méthodes de configuration

MéthodePortée d’effetReste-t-il inchangé lors d’un nouveau packaging?Utilisations recommandées
JVM startup options dans la GUIÉcrire tous les scripts de démarrage de plateforme générés cette fois-ciOui, la génération peut être répétée tant que les paramètres de la tâche sont disponiblesEmballage interactif quotidien
--jvm-option pour la CLIÉcrire tous les scripts de démarrage de plateforme générés cette fois-ciOui, les scripts de commandes/tâches peuvent servir de source de configurationCI/CD, publications répétibles
Modifier run.sh, run.bat ou les scripts TomcatModifier uniquement le répertoire de déploiement actuelNon, le repackaging écrasera les modificationsAjustements d’urgence ou spécifiques à l’environnement après déploiement
Variables d’environnement APP_JAVA_OPTSAffecter uniquement le processus actuel ou l’environnement actuelNe pas écrire dans un fichierDiagnostic temporaire, injection dans l’environnement de conteneur/service

Il est recommandé de placer les paramètres à long terme dans des tâches GUI ou des commandes CLI, et d’utiliser APP_JAVA_OPTS pour des modifications temporaires. Après avoir modifié directement le script de génération, les changements doivent être enregistrés dans la configuration de déploiement; ils devront être réappliqués lors du prochain repackaging.

2. Configuration depuis l’interface GUI

  1. Sélectionnez Advanced — customise the options yourself sur la page d’entrée; en mode simplifié, cliquez sur Customize… sur la page finale pour accéder aux paramètres avancés.
  2. Trouvez JVM startup options à l’intérieur de Common options.
  3. Entrez un paramètre complet par ligne, par exemple:
-Xms512m
-Xmx2g
-Dfile.encoding=UTF-8
-Dspring.profiles.active=prod
  1. Vérifiez dans le résumé des paramètres finaux, puis effectuez la protection.

Ces paramètres seront automatiquement écrits dans les fichiers générés run.sh et run.bat ; run.command sous macOS redirige vers run.sh, donc les mêmes paramètres sont utilisés. Les paramètres de Tomcat seront également intégrés dans les chemins de démarrage bin/catalina.sh et bin/catalina.bat. La fonction Library Encryption ne génère que des archives et non des scripts de démarrage, donc cette configuration n’est pas disponible.

Options de démarrage de la JVM dans l’interface graphique

3. Configuration depuis la ligne de commande (CLI)

Chaque paramètre utilise --jvm-option une seule fois; ne combinez pas plusieurs paramètres JVM en une seule valeur:

p4j javaapp app.jar dist \
  --jvm-option -Xms512m \
  --jvm-option -Xmx2g \
  --jvm-option -Dfile.encoding=UTF-8

Spring Boot:

p4j springboot app.jar dist \
  --jvm-option -Xms1g \
  --jvm-option -Xmx2g

Tomcat:

p4j tomcat app.war dist \
  --context /app \
  --jvm-option -Xms1g \
  --jvm-option -Xmx2g

Un paramètre unique contenant des espaces ou des caractères spéciaux doit être encadré dans son intégralité:

--jvm-option '-Dexample.message=hello world'

L’encodeur échappera les valeurs pour les scripts shell et batch en se basant sur les limites des paramètres.

4. macOS / Linux: modifiez directement le script.

Pour les applications Java et Spring Boot classiques, modifiez le répertoire de sortie de run.sh. run.command ne fait que rediriger vers run.sh, il n’est donc pas nécessaire de le modifier à nouveau.

Localisez JVM_OPTS=(...) ainsi que éventuellement JVM_OPTS+=(...) qui suivent, puis ajoutez une ligne avant l’évaluation de APP_JAVA_OPTS :

JVM_OPTS+=("-Xms512m" "-Xmx2g" "-Dfile.encoding=UTF-8")
if [ -n "${APP_JAVA_OPTS:-}" ]; then
  # ...
fi

Ne supprimez pas les paramètres --add-opens, --module-path ou --add-modules déjà générés par Spring Boot/JavaFX.

Modifiez bin/catalina.sh dans Tomcat, puis ajoutez du texte après JVM_OPTS=(...) dans run_java() :

run_java() {
  JVM_OPTS=(...)
  JVM_OPTS+=("-Xms1g" "-Xmx2g")
  # ...
}

Cette modification affecte à la fois le fonctionnement en temps réel de run.sh et le démarrage en arrière-plan de bin/startup.sh.

5. Windows: modifier directement le script

Pour les applications Java et Spring Boot ordinaires, modifier le répertoire de sortie run.bat. Trouver la ligne générée set "JVM_OPTS=..." et ajouter ce texte avant la ligne APP_JAVA_OPTS :

set "JVM_OPTS=%JVM_OPTS% -Xms512m -Xmx2g -Dfile.encoding=UTF-8"
if defined APP_JAVA_OPTS set "JVM_OPTS=%JVM_OPTS% %APP_JAVA_OPTS%"

Conserver le contenu existant de JVM_OPTS ; ne pas supprimer les paramètres internes nécessaires à Spring Boot/JavaFX.

Exécution en arrière-plan sous Windows Tomcat

Modifier bin\catalina.bat et ajouter ce texte après la ligne set "JVM_OPTS=..." existante:

set "JVM_OPTS=%JVM_OPTS% -Xms1g -Xmx2g"

Cela aura un impact sur run.bat ou bin\catalina.bat run.

Démarrage en arrière-plan sous Windows Tomcat

bin\startup.bat utilise PowerShell pour créer un processus en arrière-plan. La modification la plus simple et permanente consiste à définir APP_JAVA_OPTS avant d’appeler catalina.bat :

@echo off
set "APP_JAVA_OPTS=-Xms1g -Xmx2g"
call "%~dp0catalina.bat" start %*
exit /b %ERRORLEVEL%

Si vous souhaitez prendre en charge à la fois l’interface utilisateur et l’arrière-plan sans devoir gérer deux ensembles de scripts, privilégiez la génération à nouveau du paquet Tomcat via --jvm-option depuis la GUI ou la CLI.

6. Utilisez temporairement APP_JAVA_OPTS.

macOS / Linux

APP_JAVA_OPTS="-Xms512m -Xmx2g" ./run.sh

Tomcat:

APP_JAVA_OPTS="-Xms1g -Xmx2g" ./bin/startup.sh

Windows CMD

Configuration dans la session CMD actuelle (les commandes suivantes en hériteront; utilisez set APP_JAVA_OPTS= pour la supprimer):

set "APP_JAVA_OPTS=-Xms512m -Xmx2g"
run.bat

Cela n’a d’effet que dans le scope local; l’environnement d’origine est restauré après exécution.

setlocal
set "APP_JAVA_OPTS=-Xms512m -Xmx2g"
call run.bat
endlocal

Tomcat:

set "APP_JAVA_OPTS=-Xms1g -Xmx2g"
bin\startup.bat

Windows PowerShell

$env:APP_JAVA_OPTS = '-Xms512m -Xmx2g'
.\run.bat
Remove-Item Env:APP_JAVA_OPTS

7. Ordre des paramètres et précautions à prendre.

  • Les paramètres essentiels générés par l’outil viennent en premier, suivis des paramètres configurés via la GUI/CLI, avec APP_JAVA_OPTS ajouté en dernier.
  • Les valeurs apparaissant après certains paramètres JVM écrasent les valeurs précédentes, mais tous les paramètres ne permettent pas de répétition; il convient d’éviter de compter sur l’effet d’écriture des paramètres répétés.
  • APP_JAVA_OPTS doit être séparé par des espaces; il n’est pas adapté aux paramètres simples complexes contenant des espaces; pour de tels paramètres, privilégiez l’utilisation de la GUI, de --jvm-option ou l’édition directe de l’array de scripts.
  • Les paramètres JVM doivent se trouver avant la classe principale ou -jar ; les paramètres de l’application sont placés après les commandes run.sh/run.bat.
  • Après modification de la taille de la pile, il convient de la valider en tenant compte des limites de mémoire du conteneur, de la mémoire disponible sous le système d’exploitation et de la charge réelle.
  • Le repackaging réécrira le script de démarrage, tandis que les modifications manuelles ne seront pas intégrées automatiquement.