Alocar mais espaço de pilha a um jar Java
Pergunta
Quando você executar um programa através da linha de comando, você pode usar java -Xms -Xmx
para especificar os tamanhos de heap. Se o programa vai ser executado clicando duas vezes um arquivo .jar, há uma maneira de usar mais pilha do que o padrão?
Solução
No. É por isso que muitas vezes fazem um arquivo .bat ou .sh com esses parâmetros e direcionar os usuários para executá-lo em vez do .jar. Infelizmente, é um pouco feio ter que aparecer uma janela de prompt de comando, mas que não pode ser ajudado.
Como um benefício lado, se o seu congelamento do aplicativo, você pode direcionar os usuários para colocar pause
para o arquivo de lote (ou faça você mesmo), e então você pode ver qualquer traço de pilha que ocorre.
Editar: Você também pode usar um envoltório executável, como JSmooth ou < a href = "http://launch4j.sourceforge.net/" rel = "noreferrer"> Launch4J em vez de um arquivo de lote. Você iria perder alguma compatibilidade entre plataformas, no entanto.
Outras dicas
Em vez de um duplo clique no arquivo .jar diretamente, você pode usar um arquivo em lotes que executa java -jar -Xms -Xmx your_file.jar
. Do ponto de vista do usuário é o mesmo, mas dá-lhe mais controle sobre o comando que é realmente executado.
Você pode ter o frasco iniciar-se novamente com Runtime.getRuntime () exec (). Com as opções desejadas. O frasco pode conter mais de um método main () (em diferentes classes) e você pode ter um chamar o outro através de um exec ().
Você pode usar JSmooth ou um invólucro semelhante, o que cria um arquivo executável que lança a JVM com o parâmetros necessários. Dessa forma, você pode evitar ter um arquivo .bat e seu diálogo console. Ainda mais é uma maneira de começar o programa atual no novo processo usando Runtime.exec ou ProcessBuilder.