O que é a pilha (stack) de uma thread?

Published on 2026-08-19·v1.0

Uma porção de memória. Felizmente, isso não é algo que você precisa gerenciar em Java — é controlado pra você pela JVM.

Question

O que é a pilha (stack) de uma thread?

What It Is

A pilha de uma thread é a porção de memória usada por essa thread para guardar tudo que ela precisa enquanto executa. Ela armazena todas as variáveis locais criadas pelo código em execução, e pode conter referências a objetos na heap.

As referências em si vivem na pilha; a memória para a qual elas apontam vive na heap.

Stack vs. Heap

O que vive na pilha não é compartilhado: cada thread tem sua própria pilha. Isso não acontece com a heap, onde todas as threads da sua aplicação podem ler e escrever dados.

Como a heap é compartilhada, é nela que podem acontecer condições de corrida (race conditions). Não há condição de corrida para o que vive na pilha, já que nenhuma outra thread consegue ver ou tocar nela.

Stack Size

Threads são um recurso do sistema, e o tamanho da pilha de uma thread é fixado no nível do sistema. Pode variar de um sistema operacional para outro, mas tipicamente é de vários megabytes de memória.

Practical Example

É também por isso que uma recursão profunda e sem limite eventualmente lança um StackOverflowError: cada chamada recursiva empilha um novo frame com suas próprias variáveis locais na pilha da thread, e uma vez que essa pilha de tamanho fixo se esgota, não sobra mais espaço.

Veja acontecendo: frames empilhados e desempilhados por fib(3)

Um fib(n) recursivo ingênuo chama a si mesmo duas vezes por nível. Cada chamada empilha um novo frame na pilha da thread; cada return o desempilha de volta. Observe a profundidade crescer até 3 e voltar a 0 conforme fib(3) se desenrola:

Só 4 níveis de profundidade aqui, então cabe tranquilamente. Remova o caso base, ou recurse milhares de níveis, e esse mesmo padrão de crescimento vai direto para um StackOverflowError — a pilha de tamanho fixo da thread não tem mais espaço para outro frame.

References