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:
- 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.
- Una implementación Su implementación se conoce como JRE (Java Runtime Environment).
- 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.
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.
//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:
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