Manual de entrenamiento básico JAVA

Pensamiento arquitectónico

 

Medio ambiente

 

Configuración nginx configuration 1.1 ¿Cuál es la relación entre JDK, JRE, JVM?

¿Qué es la JVM?

 

El nombre en inglés (Java Virtual Machine) es la máquina virtual Java. Solo reconoce archivos de tipo .class. Puede reconocer las instrucciones de bytecode en el archivo de clase y llamar a la API ascendente del sistema operativo para completar la acción.

 

¿Qué es el JRE?

 

Nombre en inglés (Java Runtime Environment), Java Runtime Environment. Contiene principalmente dos partes: la implementación estándar de JVM y algunas bibliotecas de clases básicas de Java. En relación con la JVM, JRE tiene una parte de la biblioteca de clases Java.

 

¿Qué es el JDK? Nombre en inglés (Java Development Kit), kit de desarrollo Java. JDK es el núcleo de todo el desarrollo de Java, integra JRE y algunos dispositivos fáciles de usar. Por ejemplo: javac.exe, java.exe, jar.exe, etc.

 

La relación entre los tres: relación anidada. JDK> JRE> JVM.

 

1.2 El modelo de memoria de la JVM y la situación y el rol de partición

Como se muestra a continuación:

 

ingrese la descripción de la imagen aquí

 

La parte amarilla es compartida por hilos, y la parte azul es privada por hilos.

 

Área de método

Se usa para almacenar datos como información de clase, constantes y variables estáticas cargadas por la máquina virtual.

 

Montón

Almacene instancias de objetos, todos los objetos y matrices deben asignarse en el montón. Es el área de memoria más grande administrada por la JVM.

 

Pila

El modelo de memoria de la ejecución del método Java: almacena la tabla de variables locales, la pila de operandos, el enlace dinámico, la salida del método y otra información. El ciclo de vida es el mismo que el hilo.

 

Pila de métodos nativos

La función es similar a la pila de máquina virtual, excepto que la pila de método local sirve para la ejecución del método nativo, y la pila de máquina virtual sirve el método Java realizado por la máquina virtual.

 

Contador de programa

El indicador de número de línea ejecutado por el hilo actual. Es el área más pequeña del área de memoria JVM. Al realizar el trabajo de bytecode, el contador del programa se utiliza para seleccionar la siguiente instrucción de bytecode que se ejecutará.

 

1.3 ¿Cuál es el flujo del proceso de creación de objetos JVM?

El proceso general se muestra a continuación:

 

ingrese la descripción de la imagen aquí

 

Paso 1: cuando la máquina virtual encuentra una nueva instrucción, primero verificará si el parámetro de esta instrucción puede ubicar la referencia de símbolo de esta clase en el grupo constante, y comprobará si la clase a la que hace referencia este símbolo se ha cargado, resuelto e inicializado.

 

Paso 2: si la clase ya se ha cargado, vaya al paso 3; si no se ha cargado, primero debe cargar la clase.

 

Paso 3: Después de pasar la comprobación de carga de clase, el siguiente paso es asignar memoria para el objeto recién nacido.

 

Paso 4: El tamaño de memoria requerido para la generación de objetos se puede determinar completamente después de que se complete la carga de la clase. Asignar espacio para objetos es equivalente a dividir un cierto tamaño de memoria del montón de Java

 

Paso 5: el tamaño de la memoria se divide en dos casos: el primer caso: la memoria JVM es regular, toda la memoria utilizada se coloca en un lado, la memoria libre está en el otro lado y se coloca un puntero en el medio como punto de demarcación Indicador Luego, en este momento, la asignación de memoria es relativamente simple, siempre que el puntero se mueva al espacio libre a una distancia igual al tamaño del objeto. Esto es "colisión de puntero".

 

El segundo caso: la memoria de la JVM no es regular, lo que significa que la memoria utilizada y la memoria no utilizada están intercaladas. En este momento, no hay forma de hacer uso de la colisión correctiva. En este momento, necesitamos mantener una tabla para registrar la memoria disponible. Al asignar, encuentre un espacio lo suficientemente grande de la lista para asignar a la instancia del objeto y actualizarlo a la tabla de registro.

 

Paso 6: Después de completar la aplicación de espacio, la JVM necesita inicializar el espacio de memoria a un valor de 0. Si usa TLAB, puede hacer este trabajo cuando se asigna TLAB.

 

Paso 7: la JVM realiza la configuración necesaria para el objeto. Por ejemplo, el objeto es una instancia de qué clase, el código hash del objeto, la antigüedad del GC y otra información.

 

Paso 8: después de completar los pasos anteriores, desde la JVM, un objeto se completa básicamente, pero desde la perspectiva del código del programa Java, la creación del objeto acaba de comenzar, debe ejecutar el método <init>, de acuerdo con el conjunto de inicialización en el programa Inicialización de la operación, esta vez se genera un objeto de programa real.

 

1.4 ¿Cuántos tipos de algoritmos de recolección de basura? ¿Cuáles son sus ventajas y desventajas?

Los algoritmos comunes de recolección de basura son:

 

Algoritmo de marca clara, algoritmo de copia, algoritmo de clasificación de marca, algoritmo de colección generacional

 

Algoritmo de marca-barrido

El algoritmo de marcado y borrado incluye dos etapas: "marcado" y "borrado". Fase de marcado: identifique todos los objetos que se recuperarán y márquelos. Fase de limpieza: borra los objetos que no están disponibles en la fase de marcado.

 

Desventajas

 

El marcado y la eliminación no son eficientes.

Se generará una gran cantidad de escombros, lo que resulta en un reciclaje frecuente.

Algoritmo de replicación

La memoria se divide en dos bloques de igual tamaño, uno de los cuales se usa cada vez, cuando se recolecta basura, el objeto vivo se copia en otro bloque, y luego este bloque

Supongo que te gusta

Origin www.cnblogs.com/ievixvs/p/12750001.html
Recomendado
Clasificación