Pergunta

Podemos usar argumentos da JVM para limitar a memória alocada para o Heap JVM etc.

Gostaria de saber se podemos codificar esses valores dentro do programa Java durante o tempo de desenvolvimento, em vez de adicionar argumentos da JVM na linha de comando quando executarmos o programa. É possível?

Foi útil?

Solução

Minha primeira pergunta deve ser: por que você está definindo? A JVM do servidor define o máximo para 1/4 do tamanho da memória principal e isso é razoável para a maioria dos aplicativos. Você pode mudar isso construindo sua própria JVM ou pode criar um pseudônimo como

alias java="java -Xmx30g"

O que você pode fazer é verificar o uso da memória periodicamente e matar o processo se você usar mais. Esta é uma ideia muito ruim, é claro.

Em vez disso, o que você pode fazer é executar o programa novamente com os mesmos argumentos, mas com o tamanho máximo da pilha que você deseja. Ou seja, você pode executar o tempo.exec.

Você não pode alterá -lo, pois se reserva o tamanho máximo da memória na inicialização.

BTW, há um equívoco comum de que o heap é a única memória que importa. Isso não é verdade, pois a JVM, os threads pilhas, a memória nativa etc. todos usam alguma memória para que você possa e a pilha de 100 MB, mas a JVM pode estar usando 300 MB.

Outras dicas

Você está tentando alterar o tamanho da pilha em tempo de execução? Você não pode fazer isso porque o valor do tamanho da pilha deve ser definido quando a JVM é iniciada e depois não pode mudar.

Não, você não pode fazer isso. Tudo o que você pode fazer é adicionar argumento à linha de comando para gerenciar o tamanho da pilha.

Uma solução suja pode ser gerar outro processo com tamanho de pilha diferente, mas não acho que seja isso que você está procurando. Aqui Há um exemplo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top