Stack e Heap


As partes de um programa Java (variáveis, métodos e objetos) vivem em um dos dois lugares na memória: Stack e Heap.
Variáveis de instância e objetos são armazenados no Heap (ou estática), e variáveis locais são armazenadas no Stack (pilha, automática).
Stack é a pilha de execução. Cada método executado é colocado na pilha. Dessa forma, o código dos métodos e variáveis locais (incluindo parâmetros) são colocados no Stack. Se um método encher o Stack, a exceção StackOverflowException será lançada; isso quer dizer que o Stack cresceu tanto que invadiu uma área que não lhe pertence.
Heap é o local onde ficam os objetos instanciados, ou seja, é onde variáveis de instância e referências (objetos) são colocados. Quando um método cria muitas variáveis de instância a ponto de encher o Heap, a exceção OutOfMemoryError é lançada.


import java.util.Date;

public class Agenda {
     
      //variável de instância - heap
      Date data;
     
      //método - stack
      public static void main(String[] args) {
            //variável local - stack
            Date dt = new Date();
            Agenda agenda = new Agenda();
            agenda.setData(dt);
      }
     
      //parâmetro - stack
      public void setData(Date d) {
            data = d;
      }

}


Fonte: SCJP Sun Certified Programmer for Java 6 Study Guide

0 comentários:

Postar um comentário