Cambiar JVM en Java

18

Hace poco descubrí las diferentes JVM en la página wiki y pensé que comenzaría a jugar. Sin embargo, ha sido difícil encontrar documentación sobre cómo configurar Java en Ubuntu.

Digamos que quería cambiar el JRE o JDK que estoy usando, podría abrir una terminal y decir

sudo update-alternatives --config java

Y luego elija una de las versiones instaladas.

Si entiendo el derecho de JVM (que muy probablemente no lo sea), puede configurar el openJDK para usar JVM alternativos (por ejemplo, JAMVM) y ejecutarlo como tal

jamvm -jar foo.jar

2 preguntas,

1: ¿Tengo el concepto de un JVM correcto? Como en, ¿es esto posible?

2: Si es así, ¿cómo configuro la JVM y cambio el valor predeterminado a una JVM de mi elección?

ARMÓNICO
fuente
¡Genial, agregue una buena respuesta a su pregunta (puede responderla usted mismo) y obtenga algunos votos!
Bruno Pereira
@BrunoPereira ¡Listo! Esperemos que eso cubra el grupo.
OVERTONE

Respuestas:

18

Siéntase libre de usar esto como referencia para jugar con Java en tiempo de ejecución.

Elegir tu JRE

Para elegir su JRE, use

sudo update-alternatives --config java

Esto dará algo como el siguiente resultado.

  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

Luego puede seleccionar qué tiempo de ejecución de Java desea mediante la selección de número.


Elegir tu JVM

Sun / Oracle tiene dos opciones de JVM, -server y -client. Si selecciona OpenJDK como su entorno de tiempo de ejecución Java, tiene opciones adicionales.

Cuando escribe javaen el terminal sin otros parámetros, la ayuda enumera varias máquinas virtuales opcionales. No estoy seguro de cuáles vienen con OpenJDK, pero 3 populares son JamVM, Zero y Cacao

Para usarlos, simplemente escriba

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 del servidor es normalmente la predeterminada. También puede especificar, -clientpero en IcedTea6 de 64 bits parece ejecutar la misma versión que -server. Lo más probable es que haya otros, pero creo que la opción predeterminada es la más receptiva.


Configurando su memoria

Finalmente, cómo configurar la memoria de Java (solo porque)

java -Xmx1024m -Xms128m 'your other parameters here'

Esto limita la memoria permitida para el programa Java a un máximo de 1024 MB y establece su tamaño de memoria inicial en 128 MB. Esta es una excelente manera de definir los requisitos mínimos del sistema. La página de manual de Java 6 para el javacomando describe estas opciones y otras.

Eso es todo. Si alguien tiene ajustes Java adicionales para Ubuntu, déjelos en los comentarios y los agregaré.

ARMÓNICO
fuente
Hay alrededor de 47 archivos ejecutables en $ JAVA_HOME / bin y $ JAVA_HOME / jre / bin que pide un script para actualizar todas las entradas en el sistema de alternativas. Vea los archivos /usr/lib/jvm/.java*.jinfo.
usuario desconocido
¿Cómo configuro la JVM predeterminada? Por lo que he escuchado, -server tiene largos tiempos de inicio, entonces ¿por qué no es -client el valor predeterminado de todos modos para la instalación de un usuario?
dhardy
¿Hay alguna manera de cambiar los valores predeterminados, o tiene que establecer explícitamente la JVM y los límites de memoria cada vez (o en cada script de inicio individual)?
aij
0

Para configurar la JVM predeterminada dentro de una instalación de OpenJDK, debe editar el archivo de configuración jvm.cfg ubicado dentro de / usr / lib / jvm / java- versión -openjdk- arch / jre / lib / arch /jvm.cfg

Ubuntu expone el archivo jvm.cfg dentro del directorio / etc / dependiendo de la versión de OpenJDK. / etc / java-6-openjdk / jvm- arch .cfg o / etc / java-7-openjdk / jvm- arch .cfg

La línea más conocida : jvmname KNOWN dentro del archivo jvm.cfg determina la JVM predeterminada.

No hay una herramienta de configuración disponible, por lo que debe localizar y editar estos archivos manualmente.

xranby
fuente