"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Máquina virtual Java: ciclo de vida y cargadores de clases

Máquina virtual Java: ciclo de vida y cargadores de clases

Publicado el 2024-11-16
Navegar:243

La máquina virtual Java (JVM) es el núcleo del ecosistema Java y proporciona todas las herramientas esenciales para ejecutar código Java. Para comprender completamente cómo funciona, es fundamental comprender el ciclo de vida de este intérprete y sus implicaciones para el rendimiento y la optimización de las aplicaciones Java.

Todo el ciclo de vida de JVM comienza con un proceso fundamental llamado "JVM Bootstrapping" que es responsable de construir todo el entorno de ejecución y prepararlo. Es en este contexto que: se interpretan los argumentos pasados ​​en la línea de comando, el código JVM se asigna en la memoria, se inicializan las estructuras de datos internas de la JVM, comienza la gestión de la memoria y finalmente el hilo principal de la aplicación pasa a funcionar. Exploremos cada subproceso descrito en este párrafo individualmente:

Los argumentos pasados ​​en la línea de comando se interpretan

Cuando el programa se inicia a través de la línea de comando, la JVM inicia una cadena de procesos responsables de analizar los argumentos proporcionados, que pueden incluir parámetros de inicialización, como: -Xms y -Xmx para definir el tamaño mínimo y el montón máximo, el área de memoria responsable de asignar y crear objetos en el contexto de la aplicación: especificaciones de depuración o configuraciones incluso del propio ciclo del recolector de basura.

Antes de continuar, es importante mencionar: en aras de la simplicidad, analizaremos el segmento de código que se ocupa del análisis de argumentos JVM avanzados, aquellos que comienzan con -XX.

Para tener más claridad, usaremos el código fuente abierto de OpenJDK para obtener más referencias. En el archivo arguments.cpp ubicado en el directorio src/hotspot/share/runtime.arguments.cpp la función que interpreta los parámetros avanzados (-XX) por la CLI es esta:

Java Virtual Machine: ciclo de vida e Class Loaders

Haciendo un breve análisis, la función inicia una verificación para ver si el argumento pasado comienza con o -, determinando si el flag es booleano, y también si debe desactivarse o activarse.

Java Virtual Machine: ciclo de vida e Class Loaders

Después de eso, el código comienza a extraer el nombre de la bandera. Se analiza cada carácter, si no es alfanumérico o no _, termina (lo que significa que el nombre de la bandera está completo).

Java Virtual Machine: ciclo de vida e Class Loaders

Después de realizar las comprobaciones e identificar el nombre de la bandera, finalmente se invoca el método JVMFlag* flag = find_jvm_flag(name, name_len); para ver si hay alguna configuración disponible para lo que se proporcionó.

Este es un pequeño resumen de cómo se analizan los argumentos más avanzados de -XX. Es posible encontrar, sin embargo, en este mismo archivo que mencionaré, los procesos de argumentos que comienzan con -X que pasan por otra función de análisis:

Java Virtual Machine: ciclo de vida e Class Loaders

Ejemplo de la bandera: -XMS

Java Virtual Machine: ciclo de vida e Class Loaders

ARTÍCULO EN CONSTRUCCIÓN

Declaración de liberación Este artículo se reproduce en: https://dev.to/shyvictor/java-virtual-machine-ciclo-de-vida-e-cllass-loaders-1ki6?
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3