Sobes.tech
Junior

Où sont stockés les objets dans la mémoire?

sobes.tech IA

Réponse de l'IA

Les objets en mémoire sont stockés dans le tas (heap).

Le tas est une zone de mémoire allouée dynamiquement, où les objets sont placés lors de l'exécution du programme. La taille des objets n'est pas connue à l'avance, et ils sont supprimés par le ramasse-miettes.

Les types de données primitifs (entiers, valeurs booléennes, etc.) sont généralement stockés dans la pile (stack). La pile est une zone de mémoire allouée statiquement, utilisée pour stocker les variables locales et les informations sur les appels de fonctions, et elle est gérée automatiquement.

Les références aux objets (c'est-à-dire, les adresses dans le tas) sont stockées dans la pile ou dans d'autres objets dans le tas.

Exemple en Java :

// La variable de type primitif (int) est stockée dans la pile.
int count = 10;

// La variable référence (myObject) est stockée dans la pile.
// L'objet MyObject lui-même est créé dans le tas.
MyObject myObject = new MyObject();

// Le type primitif à l'intérieur de l'objet (id) est stocké comme partie de l'objet dans le tas.
myObject.setId(1);

// La référence à un autre objet (anotherObject) à l'intérieur de myObject
// est stockée comme partie de myObject dans le tas. AnotherObject lui-même est dans le tas.
myObject.setRelatedObject(new AnotherObject());

class MyObject {
    private int id; // stocké dans le tas (en tant que partie de MyObject)
    private AnotherObject relatedObject; // référence stockée dans le tas

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

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

class AnotherObject {
    // ...
}

Ainsi :

  • Pile : Types primitifs, références aux objets.
  • Tas : Les objets eux-mêmes, contenant leurs champs (y compris les types primitifs à l'intérieur des objets et les références à d'autres objets).