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