Modifica di JVM in Java


18

Ho scoperto di recente le diverse JVM sulla pagina wiki e ho pensato di iniziare a armeggiare. È stato difficile trovare la documentazione su come configurare Java su Ubuntu.

Diciamo che volevo cambiare JRE o JDK che sto usando, potrei aprire un terminale e dire

sudo update-alternatives --config java

E quindi scegliere una delle versioni installate.

Se sto capendo il diritto di JVM (che potrei benissimo non essere), puoi configurare openJDK per usare JVM alternativi (ad esempio JAMVM) ed eseguirlo come tale

jamvm -jar foo.jar

2 domande,

1: Ho il concetto di JVM giusto? Come in, è possibile?

2: In tal caso, come configuro la JVM e commuta l'impostazione predefinita su una JVM di mia scelta?


Ottimo, aggiungi una buona risposta alla tua domanda (puoi rispondere tu stesso) e ottieni alcuni voti!
Bruno Pereira,

@BrunoPereira Done! Speriamo che copra il gruppo.
OVERTONE,

Risposte:


18

Sentiti libero di usare questo come riferimento per armeggiare con Java in fase di esecuzione.

Scegli il tuo JRE

Per scegliere il tuo JRE, usa

sudo update-alternatives --config java

Questo darà qualcosa come il seguente output.

  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

È quindi possibile selezionare il runtime Java desiderato tramite la selezione del numero.


Scegli la tua JVM

Sun / Oracle hanno due scelte JVM, -server e -client. Se si seleziona OpenJDK come ambiente di runtime Java, sono disponibili ulteriori opzioni.

Quando si digita javanel terminale senza altri parametri, la guida elenca diverse macchine virtuali opzionali. Non sono sicuro di quali vengano con OpenJDK ma 3 popolari sono JamVM, Zero e Cacao

Per usarli, basta digitare

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

La VM -server è normalmente l'impostazione predefinita. Puoi anche specificare -clientma in IcedTea6 a 64 bit sembra che esegua la stessa versione di -server. Probabilmente ce ne sono altri, ma trovo che l'opzione predefinita sia la più reattiva.


Impostazione della memoria

Infine, come impostare la memoria di Java (solo perché)

java -Xmx1024m -Xms128m 'your other parameters here'

Ciò limita la memoria consentita per il programma Java a un massimo di 1024 MB e imposta la dimensione della memoria iniziale su 128 MB. Questo è un ottimo modo per definire i requisiti minimi di sistema. La pagina man Java 6 per iljava comando descrive queste opzioni e altre.

È tutto. Se qualcuno ha ulteriori modifiche Java per Ubuntu, lasciatele nei commenti e le aggiungerò.


Ci sono circa 47 file eseguibili in $ JAVA_HOME / bin e $ JAVA_HOME / jre / bin che invocano uno script per aggiornare tutte le voci nel sistema delle alternative. Vedi i file /usr/lib/jvm/.java*.jinfo.
utente sconosciuto

Come posso impostare la JVM predefinita? Da quello che ho sentito, -server ha tempi di avvio lunghi, quindi perché -client non è comunque quello predefinito per l'installazione di un utente?
Dhardy,

Esiste un modo per modificare effettivamente le impostazioni predefinite o è necessario impostare esplicitamente i limiti di memoria e JVM ogni volta (o in ogni singolo script di avvio)?
aij,

0

Per impostare la JVM di default all'interno di un impianto OpenJDK è necessario modificare il file di configurazione jvm.cfg si trova all'interno della directory / usr / lib / jvm / java- versione -openjdk- arco / jre / lib / arch /jvm.cfg

Ubuntu espone il file jvm.cfg nella directory / etc / a seconda della versione di OpenJDK. / etc / java-6-openjdk / jvm- arch .cfg o / etc / java-7-openjdk / jvm- arch .cfg

La riga più in alto - jvmname KNOWN all'interno del file jvm.cfg determina la JVM predefinita.

Non è disponibile uno strumento di configurazione, pertanto è necessario individuare e modificare questi file manualmente.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.