Cinco del área de memoria JVM se divide detallada y rápida Alfabetización

En primer lugar, la rápida alfabetización

1. JVM es lo

  JVM es Java Virtual Machine sigla, que a menudo nos referimos a la Máquina Virtual de Java. La máquina virtual es un ordenador abstracto, completo con su propia arquitectura de hardware, tales como procesadores, pilas, y la comprensión específica de lo que hacemos. Ahora solo falta saber que desea ejecutar el archivo de Java, primero debe pasar un compilador llamado javac, el código se compila en archivos de clase, y luego interpretado por los archivos de clases JVM en código máquina para cada plataforma puede ser identificado, y en última instancia lograr ejecutar código multiplataforma .
image.png

2. La relación entre el JDK, JRE, JVM

  • JDK: llamado el Kit de Desarrollo de Java, Java Development Kit para los chinos, es decir, todo lo relacionado con el java están incluidos en el mismo, tales como el entorno operativo JRE, código del núcleo de Java, JVM, y así sucesivamente.
  • JRE: llamado el entorno de ejecución de Java, el chino como el entorno de ejecución de Java que desea ejecutar el archivo Java debe tener trabajo entorno Java, JRE es proporcionar un entorno de este tipo.
  • JVM: Como ya se mencionó JVM, que es la parte central de java.
    Sólo tiene que utilizar un diagrama para comprender la relación entre estos tres:
    La figura uno: la relación entre el JDK, JRE, JVM

3. Composición de JVM de

Figura 2: Composición de la JVM figura.
  Jvm estudiantes no entienden después de ver esta imagen podría ser una fuerza ignorantes poco, pero eso está bien, sólo quieren que ésta foto JVM entender que hay tres contenidos muy importante, la forma en la ejecución de código 1.java? 2. ¿Cómo la gestión de memoria? 3. ¿Cómo el uso de recursos hilo? Existe la impresión de la cabeza, con preguntas para aprender.

4. Ejecutar el proceso de Java, probablemente archivo

  Quiere llevar a cabo los archivos fuente de Java, debe pasar por el compilador javac en .class archivo, es decir, los archivos de código de bytes. Jvm entonces el intérprete interpreta en código de máquina en una máquina particular. Intérprete en cada máquina no es lo mismo, que a menudo se emplea, a Windows y Linux sistema, que es la razón por la plataforma Java puede cruzar. Cuando se ejecuta un programa desde el principio, comenzó a crear una instancia de una máquina virtual, la ejecución de varios programas tendrán múltiples instancias de máquinas virtuales, el programa de dejar de fumar o se apaga, la instancia de máquina virtual también se mueren, los datos entre múltiples máquinas virtuales es no compartido.

área de datos en tiempo de ejecución de dos, JVM

área de datos de tiempo de ejecución 1. Composición

  Máquina virtual en la aplicación del programa Java, dividirá su propia gestión de memoria para varias regiones, cada una con su propio uso, y crear el tiempo y el tiempo no destruir la misma. En el área de memoria de las principales carreras del programa que se puede dividir en cinco, a saber: la zona método, pila, pila de máquina virtual, pilas de métodos nativos, el contador de programa. Puede ser descrito por el siguiente diagrama:
área de datos de tiempo de ejecución Java Virtual Machine

2. montón de Java

  montón de Java es la pieza más grande de la memoria java administración de máquinas virtuales es compartida por todos los hilos de la zona de memoria. El único propósito de la existencia es la de almacenar la instancia del objeto, la memoria casi todos los casos son objeto aquí asignados. Pero ahora con el desarrollo continuo de la tecnología, no todas las instancias de objetos se asignan sobre la memoria del montón, también se pueden asignar en la pila. Debido a la gran huella, y almacenar una variedad de instancias de objetos, por lo que la principal de gestión de la máquina virtual de recolección de basura java es en esta área, después será mencionado método detallado recogida de basura. JVM pila especificación puede estar en un espacio de memoria física discontinua predeterminado, el tiempo que puede ser contiguos lógicamente. Y puede ser extendido por -Xmx y -Xms montón tamaño de la memoria, si no hay suficiente memoria en la asignación del montón de la instancia, y cuando la pila no se puede extender, se informó OutOfMemoryError excepción.

3 zona método

Al igual que con el montón de Java, la zona método es compartida por los diversos hilos de área de memoria, esta área se utiliza para almacenar la información de clase (nombre de la clase, información de campo, información del método), las variables de código estático, constantes, y el compilador . especificación de JVM no distingue entre el montón y el área método, sólo el método de la zona se describe como parte de la pila lógica, pero tiene un no-alias llamado pila (no Heap), el propósito es separar de la pila Java. De acuerdo a tallar en nombre de mecanismo de recogida de basura reciclado de pensamiento, si se desarrolla en la máquina virtual HotSpot, el área de método puede ser llamado "generación permanente" (pero se puede entender, pero la esencia no es el mismo), la basura recogida del montón en Java dividida en una sección llamada generaciones permanentes, esta área se utiliza para implementar el área de método, como recolector de basura HotSpot puede gestionar el almacenamiento dinámico de Java como esto como parte de la gestión de memoria, sin tener que desarrollar un administrador de memoria especial para la zona método.

conjunto de constantes de tiempo de ejecución

Runtime piscina constante es una parte del método de la zona, además de la clases de versiones de archivo de clase, campos, métodos, y la interfaz de descripción de la información, la información es también una piscina constante para una variedad de literal generado durante la compilación y almacenamiento símbolo referencias, esta parte entrarán en la zona en el método de funcionamiento de la piscina constante de tiempo de carga de clases. Java formatos de máquina virtual para cada parte del archivo de clase (incluyendo la piscina natural constante) tiene reglas estrictas, cada byte se utiliza para almacenar datos que deben cumplir con los requisitos de la especificación, este será reconocido por la máquina virtual, carga y ejecución.

4. Contador de Programa

Aunque una gran área en la figura anterior el contador de programa, pero en realidad es un espacio de memoria más pequeña, puede ser visto como el código de bytes indicador de número de línea de hilo actual ejecutada. A continuación, el intérprete de código de bytes cuando se hace el trabajo, donde a, que está determinada por. Es sabido que en el caso de multi-hilo, CPU en el hilo de ejecución se consigue mediante roscas de conmutación alternativamente, es decir un procesador CPU (hipótesis de un solo núcleo) tiene un hilo de instrucciones sólo se ejecutará, de modo con el fin de interruptor de hilo después de la ejecución puede ser restaurado a la posición correcta, cada hilo debe tener un contador de programa separado, entre los hilos de forma independiente una de la otra tienda, independiente, llamamos a este tipo de área de memoria para la memoria "hilo privada". Obviamente, el contador de programa es el hilo privado. Si el hilo está ejecutando un método Java, contador de programa registra la dirección de la instrucción de máquina virtual de código de bytes que se está ejecutando; método nativo si la ejecución, un valor de contador de programa es el registro nulo (Indefinido), esta zona de memoria sólo es java que no prevé una situación en cualquier OutOfMemoryError especificación de máquina virtual de java zona.

5. Java Virtual Machine pila

A menudo poner java pila áspera memoria se divide en dos partes esta parte de la pila, pila y pila, la máquina virtual de Java, o una pila de la máquina virtual, las variables locales sección de la tabla. Al igual que el contador de programa, la pila de hilo en la máquina virtual es, su ciclo de vida privada con el mismo hilo. En cada método se realizan simultáneamente para crear un marco de pila (marco de pila), cada marco de pila se invoca un método correspondiente, el marco de pila para almacenar tabla de variables locales, la pila de operandos, la lista de información dinámico, las exportaciones de método. Cada método lleva a cabo desde el principio hasta el final de A corresponde marco de pila a una máquina virtual de la pila a la pila de una pila proceso.

  • tabla de variables locales: Como su nombre indica, que se utiliza para almacenar una variable local en el método (incluyendo la vida variable no estática y parámetro de la función en un método), los tipos de datos básicos, el valor de depósito directo para una variable de tipo de referencia, que almacena punteros objeto. Dado que sólo los tipos de datos básicos de las variables almacenadas tipo de referencia de dirección y de retorno valores de estos tipos de espacio requerido para conocida y fija, por lo que al entrar en un método, este método requiere mucho variables locales asignados en el marco de pila espacio está totalmente determinado durante el método de operación no va a cambiar el tamaño de la tabla de variables locales.
  • Constant punto de referencia de la piscina para Run: usado inevitablemente durante la ejecución de las constantes de proceso definidos en la clase, por lo tanto almacenada a un marco de pila apunta a una piscina constante de tiempo de ejecución de referencia.
  • Métodos devuelven dirección: Después del final de la implementación de una llamada a un método para volver a su lugar antes, por lo que necesita para guardar una dirección de retorno del método marco de pila.

6. Las pilas de métodos nativos

montones de métodos nativos y pilas de máquina virtual es muy similar, pero la diferencia es que la máquina virtual como una aplicación de la máquina virtual de los servicios de método pila de Java, pilas de métodos nativos de máquinas virtuales son el servicio de métodos nativos. Algunos máquina virtual y no distingue entre las pilas de métodos nativos y apilar máquinas virtuales, como Sun HotSpot máquina virtual directamente a los dos combinados.

7. Utilizar un cuadro resumen

Resumen de memoria JVM

 

La dirección original: https: //www.cnblogs.com/chaogu94/p/12529692.html

Supongo que te gusta

Origin www.cnblogs.com/fuqiang-terry/p/12529716.html
Recomendado
Clasificación