La invocación de java a través de dos líneas de comando diferentes implica dos JVM diferentes o dos instancias separadas de la misma JVM.Instancias de JVM
Respuesta
JVM es Java Virtual Machine, un espacio de memoria donde las clases (código) se cargan y los objetos (datos) se comparten. JVM es equivalente a un proceso del sistema operativo.
Al escribir java...
en su línea de comandos, está ejecutando un proceso independiente que carga clases Java en la memoria, las clases base de Java y las suyas (de los archivos .class o .jar que indique).
Otro comando java...
cargará un proceso diferente con su propia memoria y cargará clases por sí mismo.
Confusión de palabra de instancia: cuando dices 'dos instancias de la misma JVM'. Es habitual decir instancia de una JVM en un proceso separado, es decir, en una JVM independiente cargada. Si está diciendo: dos procesos están ejecutando JVM 1.5, OK, es la misma JVM en el sentido de que es la misma versión pero son procesos diferentes, diferentes 'instancias', independientes en todo sentido.
Webapp confusion: Una aplicación web (por ejemplo) es simplemente un conjunto de clases y objetos instanciados, que atienden algunas URL en un servidor web. Puede iniciar Tomcat con 10 aplicaciones diferentes, es decir, 10 grupos diferentes de clases y objetos, cada uno de ellos atendiendo solicitudes diferentes, pero de hecho comparten el mismo espacio de memoria (proceso de SO). Una aplicación web no puede tocar los objetos de otras aplicaciones web porque nadie le da una referencia a los otros objetos (y las clases están ocultas de alguna manera, pero esa es otra historia llamada: carga de clases).
¿Cuál es la diferencia en su pregunta? Diría: dos instancias de JVM diferentes. :)
Cada ejecución del comando java
invoca una nueva instancia de JVM. La aplicación java en ejecución podría ejecutar nuevos subprocesos de Java (como un Tomcat lo hace con aplicaciones web).
Dos JVM separadas. Puedes ejecutar muchas cosas dentro de la misma JVM (digamos 10 webapps servidas por la misma instancia de Tomcat), pero solo hay 1 comando java para iniciar tomcat.
Si inició el java.exe de Sun desde su versión JDK/JRE 1.6 desde la misma ruta de origen dos veces, obtendría dos instancias de JVM separadas y distintas. No habría intercambio entre ellos a menos que lo haya configurado a través de sus aplicaciones. Si quería ejecutar dos JVM diferentes, tendría que iniciar un java.exe de un tipo (digamos 1.5) desde una ubicación y un java.exe (versión 1.6) desde otro.
- 1. ¿Para qué Sun JVM crea instancias de sun.reflect.DelegatingClassLoader en tiempo de ejecución?
- 2. ¿Cuál es la diferencia entre JVM Spec, implementación JVM, JVM en tiempo de ejecución
- 3. ¿Cómo se diferencian las "JVM modernas" de las JVM antiguas?
- 4. Problemas de memoria JVM
- 5. Configuración de Eclipse JVM
- 6. Comprensión de JVM Better
- 7. Ejecución de varias JVM
- 8. Implementación de Java de ... ¿JVM?
- 9. Administrador de versiones de JVM
- 10. plantilla dinámica de instancias
- 11. ¿Varias instancias de QMainWindow?
- 12. Rotar instancias de BufferedImage
- 13. Importación explícita de instancias
- 14. Varias instancias de w3wp.exe
- 15. Clonación de instancias EC2
- 16. Instancias independientes de 'random'
- 17. Múltiples instancias de Redis
- 18. ¿Es OpenJDK JVM lo mismo que Oracle Java SE JVM?
- 19. Bloquear a través de varios jvm?
- 20. ¿Podemos ver objetos en la memoria JVM?
- 21. Valores predeterminados de memoria JVM
- 22. Cadena de señal JVM SIGPIPE
- 23. ¿Qué ensambladores de JVM hay?
- 24. ¿JVM termina después de OutOfMemoryError
- 25. JVM sin recolección de basura
- 26. Bibliotecas de Precisión Arbitrarias JVM
- 27. Opciones de JVM con Leiningen
- 28. Evite el calentamiento de jvm
- 29. JVM -XX: + argumento StringCache?
- 30. jvm design decision
¿Sabía que ambas respuestas son equivalentes? – Riduidel
Debe ser más específico. ¿Cuál es la diferencia de JVM para ti y qué es lo mismo? ¿Qué diferencia estás pidiendo? – splash