Configuração de parâmetros de inicialização do JVM
O Protector4J permite configurar os parâmetros de inicialização do JVM durante a compactação, além de permitir adicionar temporariamente ou modificar diretamente o script de inicialização gerado após a implantação. Para outros parâmetros avançados na GUI, consulte Configurações do modo avançado do Protector4J.
1. Três maneiras de configuração
| Método | Escopo de proteção | Se será mantido após a recompactação | Uso recomendado |
|---|---|---|---|
| JVM startup options na GUI | Gravar todos os scripts de inicialização da plataforma gerados desta vez | Sim, é possível gerar novamente enquanto os parâmetros da tarefa ainda estiverem disponíveis | Empacotamento interativo diário |
--jvm-option da CLI | Gravar todos os scripts de inicialização da plataforma gerados desta vez | Sim, scripts de comando/tarefa podem ser usados como fonte de configuração | CI/CD, publicação repetível |
Modificar run.sh, run.bat ou os scripts do Tomcat | Apenas modificar o diretório de deploy atual | Não, a reempacotagem irá sobrescrever | Ajustes de emergência ou específicos do ambiente após o deploy |
Variável de ambiente APP_JAVA_OPTS | Afeta apenas o processo atual ou o ambiente atual | Não gravar em arquivos | Diagnóstico temporário, inserção em ambientes de container/serviço |
Recomenda-se colocar parâmetros de longo prazo em tarefas GUI ou comandos CLI, usando APP_JAVA_OPTS para substituições temporárias. Após modificar diretamente o script de geração, as alterações devem ser registradas na configuração de deploy; elas precisarão ser reaplicadas na próxima reempacotagem.
2. Configurar na GUI
- Selecione Advanced — customise the options yourself na página de entrada; no modo simplificado, clique em Customize… na página final para acessar os parâmetros avançados.
- Encontre JVM startup options em Common options.
- Insira um parâmetro completo por linha, por exemplo:
-Xms512m
-Xmx2g
-Dfile.encoding=UTF-8
-Dspring.profiles.active=prod
- Revise no resumo final dos parâmetros e, em seguida, execute a proteção.
Esses parâmetros serão automaticamente gravados nos arquivos run.sh e run.bat gerados; run.command para macOS redireciona para run.sh, portanto, os mesmos parâmetros são utilizados. Os parâmetros do Tomcat também serão incluídos nos caminhos de inicialização de bin/catalina.sh e bin/catalina.bat. O Library Encryption gera apenas um arquivo compactado, sem criar scripts de inicialização, por isso essa configuração não está disponível.

3. Configurar na CLI
Cada parâmetro deve usar --jvm-option uma única vez; não combine vários parâmetros do JVM em um ú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
Parâmetros individuais com espaços ou caracteres especiais devem ser citados integralmente:
--jvm-option '-Dexample.message=hello world'
O codificador irá escapar os scripts shell e batch separadamente, de acordo com os limites dos parâmetros.
4. macOS / Linux: modifique o script diretamente
O run.sh, que é usado para editar o diretório de saída em aplicações Java e Spring Boot comuns, funciona da mesma forma. O run.command é apenas uma versão alternativa do run.sh, portanto não é necessário realizar alterações repetidas.
Encontre JVM_OPTS=(...) e quaisquer JVM_OPTS+=(...) que possam existir posteriormente, e adicione uma linha antes de avaliar APP_JAVA_OPTS:
JVM_OPTS+=("-Xms512m" "-Xmx2g" "-Dfile.encoding=UTF-8")
if [ -n "${APP_JAVA_OPTS:-}" ]; then
# ...
fi
Não remova os parâmetros --add-opens, --module-path ou --add-modules já gerados pelo Spring Boot/JavaFX.
Edite o Tomcat bin/catalina.sh e adicione após JVM_OPTS=(...) em run_java():
run_java() {
JVM_OPTS=(...)
JVM_OPTS+=("-Xms1g" "-Xmx2g")
# ...
}
Essa modificação afeta simultaneamente a execução da interface do usuário run.sh e a inicialização do backend bin/startup.sh.
5. Windows: Modifique o script diretamente.
Edite o diretório de saída do run.bat para aplicações comuns de Java e Spring Boot. Encontre a linha gerada set "JVM_OPTS=..." e adicione o seguinte antes da avaliação em 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%"
Mantenha o conteúdo original do JVM_OPTS; não exclua os parâmetros internos necessários para Spring Boot/JavaFX.
Execução em primeiro plano do Windows Tomcat.
Edite o bin\catalina.bat e adicione o seguinte após o conteúdo existente em set "JVM_OPTS=...":
set "JVM_OPTS=%JVM_OPTS% -Xms1g -Xmx2g"
Isso afetará o run.bat ou o bin\catalina.bat run.
Início em segundo plano do Windows Tomcat.
O bin\startup.bat utiliza o PowerShell para criar um processo em segundo plano. A maneira mais simples de fazer alterações permanentes é definir o APP_JAVA_OPTS antes de chamar o catalina.bat:
@echo off
set "APP_JAVA_OPTS=-Xms1g -Xmx2g"
call "%~dp0catalina.bat" start %*
exit /b %ERRORLEVEL%
Se for necessário suportar tanto a interface frontal quanto a posterior sem manter scripts separados em ambos os locais, prefira gerar novamente o pacote Tomcat por meio de --jvm-option, via GUI ou CLI.
6. Use temporariamente APP_JAVA_OPTS.
macOS / Linux
APP_JAVA_OPTS="-Xms512m -Xmx2g" ./run.sh
Tomcat:
APP_JAVA_OPTS="-Xms1g -Xmx2g" ./bin/startup.sh
Windows CMD
Defina dentro da sessão atual do CMD (comandos futuros continuarão a herdar essas configurações; use set APP_JAVA_OPTS= para removê-las):
set "APP_JAVA_OPTS=-Xms512m -Xmx2g"
run.bat
Tem efeito apenas em escopo local; o ambiente original é restaurado após a execução.
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. Ordem dos parâmetros e observações importantes.
- Os parâmetros essenciais gerados pela ferramenta vêm primeiro, seguidos pelos parâmetros configurados via GUI/CLI, com
APP_JAVA_OPTSsendo adicionado por último. - Valores que aparecem após alguns parâmetros JVM substituem os valores anteriores, mas nem todos os parâmetros permitem repetição; evite depender da substituição por parâmetros repetidos.
APP_JAVA_OPTSdeve ser dividido por espaços, o que não é adequado para parâmetros complexos que contenham espaços; nesses casos, prefira usar a GUI,--jvm-optionou editar diretamente o array de scripts.- Os parâmetros do JVM devem estar antes da classe principal ou de
-jar; os parâmetros da aplicação devem ser colocados após os comandosrun.sh/run.bat. - Após alterar o tamanho do heap, é necessário realizar uma verificação de compatibilidade levando em consideração as limitações de memória do contêiner, a memória disponível no sistema operacional e a carga real.
- A reempacotagem reescreverá o script de inicialização, e alterações feitas manualmente não serão combinadas automaticamente.