2010-11-29 26 views
6

Esta pregunta puede ser muy básica sobre Java JVM. Si tengo un programa independiente de Java y si, por ejemplo, 5 procesos de este programa se están ejecutando en un momento particular en el servidor, ¿podemos decir que estos 5 procesos de Java se están ejecutando en 5 JVM?Proceso JVM y Java Linux

Por proceso, me refiero al proceso de Linux aquí. Si ejecuto ps -ef |grep java, veré que aparecen 5 procesos de Java.

+0

http://code.google.com/p/jvmtop/ muestra todos los jvms – MRalwasser

Respuesta

10

Sí, eso es correcto. Hay una JVM por proceso java.

+0

¿Podemos decir que el # de los procesos de java es igual al # de las JVM que se ejecutan en todos los casos? – Gnanam

+2

En una configuración normal de Linux, como se describe en su pregunta. Hay posibles soluciones para intentar más de una JVM por proceso. Ver [este (antiguo) artículo] (http://onjava.com/pub/a/onjava/2001/09/25/optimization.html), por ejemplo. –

0

Depende de la JVM y las librerías nativas. Es posible que vea subprocesos de JVM con distintos PID en ps. En general, los PID secundarios tendrán PID parentales con procesos java como aquellos que son subprocesos.

No se puede decir con certeza que el # de Linux java processes == # de JVM instanciadas.

+1

En Linux, la JVM usa subprocesos nativos verdaderos, que son * similares * a los procesos. Sin embargo, no son lo mismo, ya que solo un proceso tiene su propio espacio de direcciones. –

+0

@Matthew, por supuesto, pero ambos se pueden ver con 'ps'. – Xailor

+0

Me dirijo a su último párrafo. Creo que se puede decir que (el recuento de procesos * sí * es igual al recuento de JVM), independientemente de la salida de 'ps'. –

4

Puede ejecutar el comando jps (desde la carpeta bin de JDK si no está en su ruta) para averiguar qué procesos java (JVM) se están ejecutando en su máquina.

+0

+1. Gracias, no sabía este comando antes. – Gnanam

+1

@Gnanam: encontrará el comando 'jps' útil en otra situación. Normalmente se utiliza para averiguar la identificación del proceso de su proceso java, que se puede pasar a una aplicación como un generador de perfiles como VisualVM (invocado con 'jvisualvm' comamnd) o la herramienta' jhat' para tomar volcados del montón. – CruiZen

+1

Gracias una vez más por dejarme saber la existencia de otra herramienta de análisis de Heap ['jhat'] (http://download.oracle.com/javase/6/docs/technotes/tools/share/jhat.html). – Gnanam

Cuestiones relacionadas