logo

Arquitectura JVM (máquina virtual Java)

  1. máquina virtual de Java
  2. Arquitectura interna de JVM

JVM (Java Virtual Machine) es una máquina abstracta. Es una especificación que proporciona un entorno de ejecución en el que se puede ejecutar el código de bytes de Java.

Las JVM están disponibles para muchas plataformas de hardware y software (es decir, la JVM depende de la plataforma).

¿Qué es JVM?

Es:

  1. una especificación donde se especifica el funcionamiento de la máquina virtual Java. Pero el proveedor de implementación es independiente para elegir el algoritmo. Su implementación ha corrido a cargo de Oracle y otras empresas.
  2. Una implementación Su implementación se conoce como JRE (Java Runtime Environment).
  3. Instancia de tiempo de ejecución Cada vez que escribe un comando java en el símbolo del sistema para ejecutar la clase java, se crea una instancia de JVM.

Que hace

La JVM realiza la siguiente operación:

  • Carga el código
  • Verifica el código
  • Ejecuta código
  • Proporciona un entorno de ejecución

JVM proporciona definiciones para:

golpe para bucle
  • Área de memoria
  • Formato de archivo de clase
  • conjunto de registro
  • Montón de basura recolectada
  • Informes de errores fatales, etc.

Arquitectura JVM

Entendamos la arquitectura interna de JVM. Contiene cargador de clases, área de memoria, motor de ejecución, etc.

Arquitectura JVM

1) cargador de clases

Classloader es un subsistema de JVM que se utiliza para cargar archivos de clases. Siempre que ejecutamos el programa Java, el cargador de clases lo carga primero. Hay tres cargadores de clases integrados en Java.

    Cargador de clases Bootstrap: Este es el primer cargador de clases que es la superclase del cargador de clases de extensión. Se carga el rt.jar archivo que contiene todos los archivos de clase de Java Standard Edition como clases de paquetes java.lang, clases de paquetes java.net, clases de paquetes java.util, clases de paquetes java.io, clases de paquetes java.sql, etc.Cargador de clases de extensión: Este es el cargador de clases secundario de Bootstrap y el cargador de clases principal del cargador de clases del sistema. Carga los archivos jar ubicados en el interior. $JAVA_HOME/jre/lib/ext directorio.Cargador de clases de sistema/aplicación: Este es el cargador de clases secundario del cargador de clases de extensión. Carga los archivos de clase desde classpath. De forma predeterminada, classpath está configurada en el directorio actual. Puede cambiar el classpath usando el modificador '-cp' o '-classpath'. También se le conoce como cargador de clases de aplicaciones.
 //Let's see an example to print the classloader name public class ClassLoaderExample { public static void main(String[] args) { // Let's print the classloader name of current class. //Application/System classloader will load this class Class c=ClassLoaderExample.class; System.out.println(c.getClassLoader()); //If we print the classloader name of String, it will print null because it is an //in-built class which is found in rt.jar, so it is loaded by Bootstrap classloader System.out.println(String.class.getClassLoader()); } } 
Pruébalo ahora

Producción:

javascript más cercano
 sun.misc.Launcher$AppClassLoader@4e0e2f2a null 

Estos son los cargadores de clases internos proporcionados por Java. Si desea crear su propio cargador de clases, debe ampliar la clase ClassLoader.

2) Área de clase (método)

El área de clase (método) almacena estructuras por clase, como el grupo de constantes de tiempo de ejecución, datos de campos y métodos, y el código de los métodos.

3) montón

Es el área de datos de tiempo de ejecución en la que se asignan los objetos.

4) pila

Java Stack almacena marcos. Contiene variables locales y resultados parciales, y desempeña un papel en la invocación y retorno de métodos.

Cada hilo tiene una pila JVM privada, creada al mismo tiempo que el hilo.

Se crea un nuevo marco cada vez que se invoca un método. Una trama se destruye cuando se completa la invocación de su método.

5) Registro del contador del programa

El registro de PC (contador de programa) contiene la dirección de la instrucción de la máquina virtual Java que se está ejecutando actualmente.

6) Pila de métodos nativos

Contiene todos los métodos nativos utilizados en la aplicación.

7) Motor de ejecución

Contiene:

    Un procesador virtual Intérprete:Lea el flujo de código de bytes y luego ejecute las instrucciones.Compilador Justo a Tiempo (JIT):Se utiliza para mejorar el rendimiento. JIT compila partes del código de bytes que tienen una funcionalidad similar al mismo tiempo y, por lo tanto, reduce la cantidad de tiempo necesario para la compilación. Aquí, el término 'compilador' se refiere a un traductor del conjunto de instrucciones de una máquina virtual Java (JVM) al conjunto de instrucciones de una CPU específica.

8) Interfaz nativa de Java

Java Native Interface (JNI) es un marco que proporciona una interfaz para comunicarse con otra aplicación escrita en otro lenguaje como C, C++, ensamblador, etc. Java usa el marco JNI para enviar resultados a la consola o interactuar con las bibliotecas del sistema operativo.

java leyendo csv