Stack y Heap
martes, septiembre 27, 2011 at 9:25PM
vlopezf in certificacion, java, ocjp, scjp

 En este artículo vamos a explicar estas dos zonas diferentes de memoria que utiliza la JVM (Java Virtual Machine) de Java.

El Stack (Pila) se utiliza para almacenar variables locales, variables de referencia, parámetros y valores de retorno, resultados parciales. También se utiliza para llevar el control de la invocación y retorno de los métodos.

Cada thread en la JVM tiene asignado un stack privado desde el momento de su creación.

El Heap (Montículo) almacena objetos y sus variables de instancia. Es un espacio de memoria dinámica que se crea al inicio de la máquina virtual y es único.

El administrador de este espacio de memoria dinámica es el sistema de administración de almacenamiento automático o más conocido como Garbage Collector (Recolector de Basura).


Veamos con el siguiente ejemplo qué elementos se sitúan en el Stack y cuáles en el Heap:


public class EjemploStackYHeap{

    int atributoEntero;
    String atributoCadena;    

    public void setAtributoEntero (int x) {
       atributoEntero = x;
    }
          
    public void setAtributoCadena(String s) {
      atributoCadena = s;

    }
    
    public static void main (String[] args){
      int enteroLocal = 5;
      String cadenaLocal = "atributo";
                      
      EjemploStackAndHeap e = new EjemploStackAndHeap();
      e.setAtributoEntero (enteroLocal);
      e.setAtributoCadena (cadenaLocal);
                        
   }
}

 

Ocurriría lo siguiente:




 

Article originally appeared on javaHispano (http://www.javahispano.org/).
See website for complete article licensing information.