Java Virtual Machine es cómo ejecutar código de bytes de Java?

En la máquina virtual HotSpot JDK estándar, por ejemplo, la máquina virtual de Java es particularmente cómo ejecutar código de bytes de Java a partir de dos máquinas virtuales y la perspectiva del hardware subyacente.

 

perspectiva de la máquina virtual

Desde la perspectiva del punto de vista de la máquina virtual, la ejecución de código Java primero debe cargarlo en archivos de clase compilados desde la máquina virtual de Java.

Después de la carga de la clase Java se almacena en el área de método (Método Area) en. la operación real, el código de máquina zona método de ejecución virtual.

En la operación, siempre que las llamadas en un método Java, Java Virtual Machine para generar un método marco de pila en hilo de Java actual pila para almacenar variables y operando en código de bytes locales.

El tamaño del marco de pila se calcula de antemano, y la máquina virtual de Java no requiere una memoria de cuadro pila distribuida de forma continua en el espacio. 

Cuando se sale del método de ejecución actualmente, independientemente de los rendimientos es la rentabilidad normal o anormal, la máquina virtual de Java expulsará el marco de pila actual para el subproceso actual, y se desecha.

 

la perspectiva del hardware

Desde la perspectiva del hardware, el código de bytes de Java no se puede ejecutar directamente. Por lo tanto, el código de bytes de Java Virtual Machine necesita ser traducido a código máquina.

HotSpot en el que el proceso de traducción en dos formas: la primera se interpreta, es decir, uno por uno para traducir bytecode en código máquina y ejecutar;

El segundo es el tiempo del compilador (compilación Just-In-Time, JIT), todo el código de bytes se trata de un método que comprende compilado en código máquina antes de la ejecución.

El primero tiene la ventaja de tener que esperar compilador, mientras que el último tiene la ventaja de hecho correr más rápido.

 modo mixto HotSpot predeterminado, combina las ventajas de ambos interpretación y ejecución de compilación tiempo.

Será interpretado primera bytecode, y que después de código caliente repetido con el método como una compilación-unidad de tiempo.

 

tiempo de compilación

tiempo de compilación basado en la asunción de ocho ley en línea con el programa, que es el veinte por ciento del código ocupa el ochenta por ciento de los recursos informáticos.

Para el código de uso menos frecuente que ocupa la mayor parte, no hace falta mucho tiempo para compilarlo en código de máquina, sino más bien tomar la forma de ejecución interpretativa de la operación;

Por otro lado, para ocupar sólo una pequeña porción del código de calor, que puede ser compilado en código máquina, con el fin de alcanzar la velocidad de funcionamiento deseada.

 

Con el fin de satisfacer las necesidades de diferentes escenarios de usuario, HotSpot pluralidad de compilador incorporado en tiempo: C1, C2 y Graal.

Graal es Java 10 introdujo formalmente el compilador tiempo experimental, no discutir aquí temporalmente.

 

La razón por la introducción de una pluralidad de compilador en tiempo que se utiliza para el comercio entre la eficiencia del código generado y el tiempo de compilación.

 

C1 también se llama compilador cliente, no es un requisito para el desempeño de inicio del programa GUI del cliente, optimizado utilizando medios relativamente simples, y por lo tanto el tiempo de compilación corto.

Se requiere C2 también se conoce como programa del lado del servidor orientado compilador-servidor para un rendimiento máximo, métodos de optimización empleadas relativamente complicado.

Por lo tanto el tiempo de compilación de largo, pero una mayor eficiencia del código generado.

Comenzando con Java 7, predeterminado HotSpot estratificado compilado por: C1 método caliente primero compilado, y luego de proceso caliente caliente será compilado más C2.

Con el fin de no interferir con el funcionamiento normal de las aplicaciones, instantáneo HotSpot compilador se compila en el hilo adicional hecha.

HotSpot compilador establece el número de hilos en función del número de CPU, y una 1: configuración de la relación C1 2 C2 y al compilador.

En el caso de los recursos informáticos suficientes, e instantáneo interpretado, bytecode compilado puede llevarse a cabo simultáneamente.

código de máquina habilitada llamará al método después de la siguiente compilación, para reemplazar el original interpretado.

 

Publicados 113 artículos originales · ganado elogios 25 · Vistas a 30000 +

Supongo que te gusta

Origin blog.csdn.net/qq_42006733/article/details/104767269
Recomendado
Clasificación