Alterando a JVM em Java

18

Só recentemente descobri as diferentes JVMs na página wiki e pensei em começar a mexer. Tem sido difícil encontrar documentação sobre como configurar o Java no Ubuntu.

Vamos dizer que eu queria mudar o JRE ou JDK que estou usando, eu poderia abrir um terminal e dizer

sudo update-alternatives --config java

E, em seguida, escolha uma das versões instaladas.

Se estou entendendo direito da JVM (o que talvez eu não esteja), você pode configurar o openJDK para usar JVM alternativas (por exemplo, JAMVM) e executá-lo como tal

jamvm -jar foo.jar

2 perguntas,

1: Eu tenho o conceito de uma JVM certo? Como, isso é possível?

2: Em caso afirmativo, como configuro a JVM e alterno o padrão para uma JVM de minha escolha?

SUBSTITUIÇÃO
fonte
Ótimo, adicione uma boa resposta à sua pergunta (você mesmo pode respondê-la) e receba alguns votos positivos!
Bruno Pereira
@BrunoPereira Done! Espero que isso cubra o monte.
25412

Respostas:

18

Sinta-se livre para usar isso como uma referência para mexer com Java em tempo de execução.

Escolhendo seu JRE

Para escolher seu JRE, use

sudo update-alternatives --config java

Isso dará algo como a seguinte saída.

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-6-openjdk/jre/bin/java         1061      auto mode
* 1            /usr/lib/jvm/java-6-openjdk/jre/bin/java         1061      manual mode
  2            /usr/lib/jvm/java-6-sun/jre/bin/java             63        manual mode
  3            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1051      manual mode

Você pode então selecionar qual Java Runtime você deseja através da seleção de número.


Escolhendo sua JVM

A Sun / Oracle tem duas opções de JVM, -server e -client. Se você selecionar o OpenJDK como seu Java Runtime Environment, terá opções adicionais.

Quando você digita javano terminal sem outros parâmetros, a ajuda lista várias VMs opcionais. Não tenho certeza de quais vêm com o OpenJDK, mas três populares são JamVM, Zero e Cacao

Para usá-los, basta digitar

java -jamvm 'your other parameters here'
java -cacao 'your other parameters here'
java -zero 'your other parameters here'
java -server 'your other parameters here

A VM -server é normalmente o padrão. Você também pode especificar, -clientmas no IcedTea6 de 64 bits, ele parece executar a mesma versão que -server. Provavelmente existem outros, mas acho que a opção padrão é a mais responsiva.


Configurando sua memória

Finalmente, como definir a memória do Java (apenas porque)

java -Xmx1024m -Xms128m 'your other parameters here'

Isso limita a memória permitida para o programa Java a um máximo de 1024 MB e define seu tamanho de memória inicial como 128 MB. Essa é uma ótima maneira de definir os requisitos mínimos do sistema. A página do manual Java 6 para o javacomando descreve essas opções e outras.

Isso é tudo. Se alguém tiver ajustes adicionais de Java para o Ubuntu, deixe-os nos comentários e eu os adicionarei.

SUBSTITUIÇÃO
fonte
Existem cerca de 47 arquivos executáveis ​​em $ JAVA_HOME / bin e $ JAVA_HOME / jre / bin que clicam em um script para atualizar todas as entradas no sistema alternativo. Veja os arquivos /usr/lib/jvm/.java*.jinfo.
usuário desconhecido
Como defino a JVM padrão? Pelo que ouvi, o servidor tem longos tempos de inicialização, então por que o cliente não é o padrão de qualquer maneira para uma instalação do usuário?
Dhardy
Existe uma maneira de realmente alterar os padrões ou você precisa definir explicitamente a JVM e os limites de memória a cada vez (ou em cada script de inicialização individual)?
aij
0

Para definir a JVM padrão dentro de uma instalação do OpenJDK, é necessário editar o arquivo de configuração jvm.cfg localizado dentro da / usr / lib / jvm / java- version -openjdk- arch / jre / lib / arch /jvm.cfg

O Ubuntu expõe o arquivo jvm.cfg dentro do diretório / etc /, dependendo da versão do OpenJDK. / etc / java-6-openjdk / jvm- arch .cfg ou / etc / java-7-openjdk / jvm- arch .cfg

A linha KNOWN mais - jvmname dentro do arquivo jvm.cfg determina a JVM padrão.

Não há ferramenta de configuração disponível, portanto, você precisa localizar e editar esses arquivos manualmente.

xranby
fonte