English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Diferencia entre pila y memoria heap en Java

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úmeroClavePilaMemoria 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