Boa tarde amigos,
Antes de tudo quero dizer que pesquisei sobre o assunto aqui no fórum mesmo, li muitas explicações, algumas muito boas e outras me confundiram, estou estudando para certificação e gostaria de saber se esse pequeno rascunho que fiz está no caminho certo, vou anexar a este tópico.
Pelo que li no stack ficam as variáveis locais e métodos, enquanto no heap os objetos e seus atributos. Vejam por favor o anexo, pois tenho muita dificuldade em entender este conceito. Abraço a todos.
Quase lá …
De fato, todas as variáveis locais são alocadas na Stack, tantos variáveis de tipos primitivos quanto variáveis de tipos de referência. Esse ponto é muito importante: mesmo as variáveis que recebem objetos, quando declaradas dento de um método, são alocadas na Stack. Isso porque a variável é simplesmente um ponteiro. O objeto em si fica na Heap. Por exemplo, quando se declara uma variável local do tipo String a variável alocada na Stack é apenas uma referência para algum objeto armazenado na heap. O mesmo vale para arrays. Em Java, arrays são tratados como objetos. Assim, ao declarar uma variável local que é um array, a variável é apenas um ponteiro apontado para um objeto na heap.