Configuración de parámetros de inicio de JVM
Protector4J permite configurar los parámetros de inicio de JVM durante el empaquetado, así como agregarlos temporalmente o modificar directamente el script de inicio generado después del despliegue. Para otros parámetros avanzados en la GUI, consulte Configuración del modo avanzado de Protector4J.
1. Tres métodos de configuración
| Método | Ámbito de efecto | ¿Se mantiene al reempaquetar? | Usos recomendados |
|---|---|---|---|
| JVM startup options en la GUI | Escribir todos los scripts de inicio de plataforma generados en esta ocasión | Sí, se puede generar nuevamente mientras los parámetros de la tarea sigan estando disponibles | Empaquetado interactivo diario |
--jvm-option en la CLI | Escribir todos los scripts de inicio de plataforma generados en esta ocasión | Sí, los scripts de comandos/tareas pueden usarse como fuente de configuración | CI/CD, publicación reutilizable |
Modificar run.sh, run.bat o los scripts de Tomcat | Solo modificar el directorio de despliegue actual. | No, el reempaquetado sobrescribirá los cambios. | Ajustes de emergencia o específicos del entorno después del despliegue. |
Variables de entorno APP_JAVA_OPTS. | Solo afecta al proceso actual o al entorno actual. | No escribir en archivos. | Diagnóstico temporal, inyección en entornos de contenedores/servicios. |
Se recomienda colocar los parámetros a largo plazo en tareas GUI o comandos CLI, y utilizar APP_JAVA_OPTS como sobrescritura temporal. Después de modificar directamente el script de generación, se deben registrar los cambios en la configuración de despliegue; serán necesarios nuevamente al reempaquetar la próxima vez.
2. Configuración desde la GUI
- Seleccione Advanced — customise the options yourself en la página de entrada; en el modo simplificado, haga clic en Customize… en la página final para acceder a los parámetros avanzados.
- Busque JVM startup options dentro de Common options.
- Introduzca un parámetro completo por línea, por ejemplo:
-Xms512m
-Xmx2g
-Dfile.encoding=UTF-8
-Dspring.profiles.active=prod
- Revise los parámetros finales en el resumen y luego ejecute la protección.
Estos parámetros se escribirán automáticamente en los archivos generados run.sh y run.bat; run.command para macOS redirige a run.sh, por lo que se utilizan los mismos parámetros. Los parámetros de Tomcat también se incluirán en las rutas de inicio de bin/catalina.sh y bin/catalina.bat. Library Encryption solo genera archivos archivados y no scripts de inicio, por lo que no se ofrece esta configuración.

3. Configuración desde la CLI
Cada parámetro debe utilizar --jvm-option una sola vez; no combine varios parámetros de JVM en un único valor:
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
Los parámetros individuales que contengan espacios o caracteres especiales deben citarse en su totalidad:
--jvm-option '-Dexample.message=hello world'
El codificador escapará los valores para scripts shell y batch según los límites de cada parámetro.
4. macOS / Linux: modifique directamente los scripts.
En aplicaciones comunes de Java y Spring Boot, edite el directorio de salida run.sh. run.command solo redirige a run.sh, por lo que no es necesario realizar modificaciones adicionales.
Busque JVM_OPTS=(...) y, si existe, JVM_OPTS+=(...), y añada una línea antes de APP_JAVA_OPTS:
JVM_OPTS+=("-Xms512m" "-Xmx2g" "-Dfile.encoding=UTF-8")
if [ -n "${APP_JAVA_OPTS:-}" ]; then
# ...
fi
No elimine los parámetros --add-opens, --module-path o --add-modules ya generados por Spring Boot/JavaFX.
Edite bin/catalina.sh en Tomcat y añada un contenido después de JVM_OPTS=(...) en run_java():
run_java() {
JVM_OPTS=(...)
JVM_OPTS+=("-Xms1g" "-Xmx2g")
# ...
}
Esta modificación afecta tanto al funcionamiento en tiempo real de run.sh como al inicio en segundo plano de bin/startup.sh.
5. Windows: Modificar directamente el script.
Editar run.bat en las aplicaciones comunes de Java y Spring Boot para cambiar el directorio de salida. Encuentre la línea generada set "JVM_OPTS=..." y, antes de la evaluación en APP_JAVA_OPTS, añada lo siguiente:
set "JVM_OPTS=%JVM_OPTS% -Xms512m -Xmx2g -Dfile.encoding=UTF-8"
if defined APP_JAVA_OPTS set "JVM_OPTS=%JVM_OPTS% %APP_JAVA_OPTS%"
Mantenga el contenido original de JVM_OPTS; no elimine los parámetros internos necesarios para Spring Boot/JavaFX.
Ejecución en primer plano de Tomcat en Windows.
Edite bin\catalina.bat y, después del contenido existente en set "JVM_OPTS=...", añada lo siguiente:
set "JVM_OPTS=%JVM_OPTS% -Xms1g -Xmx2g"
Esto afectará a run.bat o bin\catalina.bat run.
Inicio en segundo plano de Tomcat en Windows.
bin\startup.bat utiliza PowerShell para crear un proceso en segundo plano. La forma más sencilla de realizar cambios permanentes es configurar APP_JAVA_OPTS antes de llamar a catalina.bat:
@echo off
set "APP_JAVA_OPTS=-Xms1g -Xmx2g"
call "%~dp0catalina.bat" start %*
exit /b %ERRORLEVEL%
Si se desea soportar tanto la interfaz frontal como la posterior sin mantener scripts separados en ambos lugares, es preferible generar nuevamente el paquete de Tomcat mediante --jvm-option a través de la GUI o CLI.
6. Uso temporal de APP_JAVA_OPTS.
macOS / Linux
APP_JAVA_OPTS="-Xms512m -Xmx2g" ./run.sh
Tomcat:
APP_JAVA_OPTS="-Xms1g -Xmx2g" ./bin/startup.sh
Windows CMD
Se configura en la sesión actual de CMD (los comandos posteriores heredarán estos ajustes; use set APP_JAVA_OPTS= para eliminarlos).
set "APP_JAVA_OPTS=-Xms512m -Xmx2g"
run.bat
Solo tiene efecto en el ámbito local; al ejecutarse, se restaura el entorno original.
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. Orden de los parámetros y consideraciones importantes.
- Los parámetros esenciales generados por la herramienta van primero, seguidos por los parámetros configurados a través de la GUI/CLI, y finalmente
APP_JAVA_OPTSse agrega al final. - Los valores que aparecen después de algunos parámetros JVM sobrescriben a los valores anteriores, pero no todos los parámetros permiten repeticiones; se debe evitar depender de la sobrescritura mediante parámetros repetidos.
APP_JAVA_OPTSse divide por espacios, por lo que no es adecuado para parámetros simples complejos que contengan espacios; para este tipo de parámetros, es preferible utilizar la GUI,--jvm-optiono editar directamente el array de scripts.- Los parámetros de JVM deben encontrarse antes de la clase principal o de
-jar; los parámetros de la aplicación se colocan después de las órdenesrun.sh/run.bat. - Después de modificar el tamaño del heap, es necesario verificarlo teniendo en cuenta las limitaciones de memoria del contenedor, la memoria disponible del sistema operativo y la carga real.
- Al reempaquetar, se sobrescribirá el script de inicio; los cambios manuales no se integrarán automáticamente.