Explique as principais diferenças entre a área de memória Stack e Heap na máquina virtual Java
sobes.tech IA
Resposta da IA
A máquina virtual Java divide a memória em duas áreas principais: Stack (pilha) e Heap (montão).
-
Stack (pilha) — é uma área de memória onde são armazenadas as variáveis locais dos métodos e as informações sobre as chamadas de funções (quadros de pilha). Cada thread tem a sua própria pilha. O acesso aos dados na pilha é muito rápido, a memória é alocada e libertada automaticamente ao entrar e sair dos métodos. Na pilha são armazenados tipos primitivos e referências a objetos.
-
Heap (montão) — é uma área de memória onde são colocados os objetos e arrays criados dinamicamente através do operador
new. O montão é comum a todos os threads, e a gestão da memória aqui é feita pelo coletor de lixo (Garbage Collector). Os objetos no montão permanecem enquanto existirem referências a eles.
Resumindo:
- Stack: acesso rápido, armazena variáveis locais e chamadas de métodos, de tamanho limitado.
- Heap: armazena objetos, gerido pelo coletor de lixo, geralmente maior e dinâmico.
Exemplo:
public void exemplo() {
int a = 10; // variável a armazenada na pilha
MyObject obj = new MyObject(); // referência obj na pilha, objeto no montão
}