2009-12-31 11 views
7

¿Puedo ejecutar más de una JVM? En caso afirmativo, ¿cómo puedo encontrar una clase en particular cargada en qué JVM?¿Puedo ejecutar más de una JVM en mi única PC?

+1

¿por qué le gustaría saber qué VM tiene cargada la clase? Si sabemos que tal vez podamos darle una respuesta. – TofuBeer

+0

Esto parece que está tratando de hacer algo que debería hacerse de otra manera. No debería necesitar saber qué clase está cargada en una JVM. –

Respuesta

12

No está del todo claro a qué se refiere, pero:

  • Usted puede tener más de una máquina virtual (versión/marca, etc) instalado en la misma máquina
  • Puede ejecutar más de una java proceso, ya sea de la misma versión de JVM o diferente

A menos que esté ejecutando un agente de depuración o algo similar, no conozco ninguna forma de preguntarle a un proceso de JVM si está cargado en una clase en particular. Parece un requisito extraño: ¿por qué quieres hacer esto?

4

Puede ejecutar la mayor cantidad de JVM como se puede encajar en el disco y en la memoria :)

Siempre que se inicia una aplicación Java, se intenta por primera vez la JVM y luego diciéndole qué aplicación se ejecute. La respuesta a "qué JVM" es simplemente: ¡la JVM con la que cargó la aplicación!

Es posible hacer algunos trucos esotéricos con cargadores de clases que serían una excepción a lo que acabo de decir. Pero es cierto en el caso general y en la mayoría de todas las aplicaciones.

0

Múltiple JRE (Java Runtime Enviroment) es muy posible. Lo hago El hecho es que JVM no siempre se ejecuta en su sistema. Es como cualquier otro software. Cuando ejecuta un archivo jar, comienza a ejecutarse.

El JRE por omisión se establece en variables de entorno como JAVA_HOME (haz clic derecho en Mi PC -> Propiedades -> pestaña Opciones avanzadas -> Variables de entorno)

Para ejecutar un archivo JAR que sólo tiene que ejecutar este comando:

C: \ archivos de Programa \ Java \ j2re1.4.2_04 \ bin \ javaw.exe" -jar Myfile.jar

Se puede utilizar cualquier otro jre javaw para ejecutar un archivo jar.

Tenga en cuenta que j2re1.4.2_04 puede no ser su versión jre.

Editar:

Todas las clases en una corrida archivo jar en una única JVM. Como puedes adivinar Vea su JAVA_HOME, es el valor predeterminado.

3

¿Puedo ejecutar más de una JVM?

Sí - acaba de ejecutar el proceso de 'java'

Si sí, entonces cómo puedo encontrar una clase particular se carga en la que JVM?

El programa 'JPS' que se distribuye con el SDK Java mostrará una lista de todos los procesos Java (JVM) ruinning en su máquina, la clase principal que está siendo ejecutado por cada JVM y la ruta de clase. Tendrá que ver qué jarras o clases hay en cada ruta de clases para averiguar si una clase está cargada o no.

intente ejecutar

jps -mlvV 

y ver lo que se obtiene

6

Sí, puede ejecutar múltiples de JVM en una sola máquina.

Sun empaqueta las herramientas para ejecutar el jvm de diferentes formas. Por lo general, tiene un kit de desarrollo de java (jdk) o edición estándar de java (jse) instalado como el predeterminado. Esos paquetes incluyen un programa java que se invoca para iniciar un jvm. Además, el jdk también contiene algunos comandos adicionales (como javac) para desarrolladores.

Puede tener múltiples jdk's y/o jse's disponibles en una sola máquina. En Windows, los paquetes jdk y jse generalmente se instalan en Program Files/java (esto es de memoria ya que no tengo una pc a mano en este momento)

En Mac, mire en /System/Library/Frameworks/JavaVM.framework/Versions .

En Linux, utilizaría el comando which java para determinar dónde está instalado el comando predeterminado java (generalmente/usr/bin). Luego, haga un ls -al | grep java (dentro de/usr/bin, por ejemplo) y observe dónde apuntan los enlaces simbólicos para averiguar dónde podrían haber otras versiones instaladas.

Una vez que haya descubierto dónde se encuentran cada una de las distintas jdk y jse en su sistema, entonces puede comenzar a averiguar qué versión de java se utiliza para iniciar cada uno de los programas.

Cada programa java se iniciará utilizando el jvm predeterminado. Abra una ventana o terminal de comandos y pruebe java -version para determinar qué versión es la predeterminada actual.

En lugar de utilizar la versión predeterminada de java, también se pueden iniciar programas para usar una versión java específica. Por ejemplo, a veces creo un atajo de Windows personalizado para abrir Eclipse usando una versión específica de jdk.

A partir de java 5, hay una herramienta llamada jconsole que también podría ayudarlo a determinar qué programas se están ejecutando en qué versiones de jvms. Simplemente abra una consola y escriba jconsole y debería obtener una buena GUI que muestre todos los programas que se ejecutan en el jvm predeterminado. Creo que incluso podría inspeccionar programas classpaths.

Espero que ayude, buena suerte!

1

Sí, puede instalar más de un jvm en su PC, porque el sistema operativo carga una instancia de jvm (no todo el jvm) en la memoria RAM. Podemos llamar a diferentes archivos jvm como JDK 1.4 o JDK 1.6 estableciendo su ruta.

0

Puede ejecutar tantas como desee JVM en la misma máquina. Solo necesita abrir varias ventanas CommandPrompt y ejecutar lo que desee a través de la aplicación java o javaw. La clase que ejecuta JVM es aquella clase que contiene el método main(). El método Main() es lo primero que se ejecuta al iniciar alguna aplicación Java. Por supuesto, main() se encuentra en algunas de tus clases. Eso es todo.

Cuestiones relacionadas