Sobes.tech
Junior

Onde são armazenados os objetos na memória?

sobes.tech IA

Resposta da IA

Os objetos na memória são armazenados no montão (heap).

O montão é uma região de memória alocada dinamicamente, onde os objetos são colocados durante a execução do programa. O tamanho dos objetos não é conhecido de antemão e eles são eliminados pelo coletor de lixo.

Os tipos de dados primitivos (números inteiros, valores booleanos, etc.) geralmente são armazenados na pilha (stack). A pilha é uma região de memória alocada estaticamente, usada para armazenar variáveis locais e informações de chamadas de funções, e é gerenciada automaticamente.

As referências a objetos (ou seja, endereços no montão) são armazenadas na pilha ou em outros objetos no montão.

Exemplo em Java:

// Variável de tipo primitivo (int) armazenada na pilha.
int count = 10;

// Variável de referência (myObject) armazenada na pilha.
// O próprio objeto MyObject é criado no montão.
MyObject myObject = new MyObject();

// O tipo primitivo dentro do objeto (id) é armazenado como parte do objeto no montão.
myObject.setId(1);

// A referência a outro objeto (anotherObject) dentro de myObject
// é armazenada como parte de myObject no montão. AnotherObject também está no montão.
myObject.setRelatedObject(new AnotherObject());

class MyObject {
    private int id; // armazenado no montão (como parte de MyObject)
    private AnotherObject relatedObject; // referência armazenada no montão

    public void setId(int id) {
        this.id = id;
    }

    public void setRelatedObject(AnotherObject relatedObject) {
        this.relatedObject = relatedObject;
    }
}

class AnotherObject {
    // ...
}

Portanto:

  • Pilha: Tipos primitivos, referências a objetos.
  • Montão: Os próprios objetos, contendo seus campos (incluindo tipos primitivos dentro de objetos e referências a outros objetos).