English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JVM divide el espacio de memoria en dos partes: una es la pila y la otra es el espacio de heap. El espacio de pila se utiliza principalmente para almacenar el orden de ejecución de métodos y variables locales.
La pila siempre almacena bloques en orden LIFO, mientras que la memoria heap utiliza asignación dinámica para asignar y desasignar bloques de memoria.
La memoria asignada al heap permanecerá hasta que ocurra uno de los siguientes eventos:
Finalización del programa
Sin memoria
Por el contrario, la memoria asignada a la pila siempre existe hasta que la función regrese. Aquí hay una diferencia.
Número | Clave | Pila | Memoria heap |
---|---|---|---|
1 | Básico | La memoria de pila se usa para almacenar proyectos de corta duración, como variables locales, variables de referencia de objetos | La memoria heap se asigna a almacenar objetos y clases de JRE. |
2 | Método de orden | La pila siempre se mantiene en orden LIFO (último en entrar, primero en salir) | La memoria heap se asigna dinámicamente, sin un patrón fijo para asignar y desasignar bloques en la memoria |
3 | Tamaño | Podemos usar parámetros de JVM-Xss para aumentar el tamaño de la memoria de pila | Podemos usar opciones de JVM-Xms y-Usamos Xmx para aumentar o disminuir el tamaño de la memoria heap. |
4 | Visibilidad | La variable solo es visible para la hebra propietaria | Todas las hebras son visibles |
5 | Excepciones | JVM lanzará java.lang.StackOverflowError | JVM lanzará java.lang.OutOfMemoryError |