Capacitación en Java de Beida Jade Bird: ¿A qué debemos prestar atención en la gestión de la memoria de programación Java?
Contador de programa (comprensión) El contador de programa puede considerarse como un indicador de número de línea del código de bytes ejecutado por el hilo actual.
En el modelo conceptual de la máquina virtual, el trabajo del intérprete de código de bytes es seleccionar la siguiente instrucción de código de bytes que se ejecutará cambiando el valor del contador del programa, bifurcando, haciendo bucles, saltando y manejando excepciones. , la recuperación de subprocesos y otras funciones básicas dependen de este contador.
Pila de máquina virtual Java (comprensión) La pila de máquina virtual Java también es privada de subprocesos y su ciclo de vida es el mismo que el del subproceso.
La pila de la máquina virtual describe el modelo de memoria de ejecución del método Java: cada método crea un marco de pila para almacenar tablas de variables locales, pilas de operandos, listas enlazadas dinámicas, información de salida de métodos, etc.
El proceso desde la llamada hasta la ejecución de cada método corresponde al proceso de marco de pila a marco de pila en la pila de la máquina virtual.
La tabla de variables locales contiene varios tipos de datos básicos conocidos por el compilador (booleano, byte, char, short, int, float, long, double), referencias de objetos y tipos de direcciones de retorno (que apuntan a la dirección de instrucciones de código de bytes) .
Si no se puede solicitar suficiente memoria durante la expansión, se generará una excepción OutOfMemoryError.
Pila de métodos locales (comprensión) La función de la pila de métodos locales es similar a la de la máquina virtual. La diferencia es que la pila de la máquina virtual sirve los métodos Java ejecutados por la máquina virtual, mientras que la pila local. La pila de métodos sirve los métodos Java utilizados por la máquina virtual.
Algunas máquinas virtuales combinan directamente la pila de métodos locales y la pila de máquinas virtuales en una sola.
Genera excepciones StackOverflowError y OutOfMemoryError.
La memoria dinámica de Java se utiliza para almacenar matrices e instancias de objetos recién creados.
(Punto clave) El montón de Java es un área de memoria compartida por todos los subprocesos y se crea cuando se inicia la máquina virtual. El propósito de esta área de memoria es almacenar instancias de objetos.
El montón de Java es el área principal administrada por el recolector de basura.
Institución/descubrimiento de cursos de Java Dado que el recopilador actual básicamente adopta el algoritmo de reciclaje generacional, el montón de Java se puede subdividir en: nueva generación y antigua generación.
Desde una perspectiva de asignación de memoria, el montón de Java compartido por subprocesos se puede dividir en múltiples búferes de asignación privada de subprocesos (TLAB).