Sobes.tech
Junior — Middle

Expliquez les principales différences entre la zone de mémoire Stack et Heap dans la machine virtuelle Java

sobes.tech IA

Réponse de l'IA

La machine virtuelle Java divise la mémoire en deux zones principales : la pile (Stack) et le tas (Heap).

  • Stack (pile) — c'est une zone de mémoire où sont stockées les variables locales des méthodes et les informations sur les appels de fonctions (cadres de pile). Chaque thread possède sa propre pile. L'accès aux données dans la pile est très rapide, la mémoire est allouée et libérée automatiquement lors de l'entrée et de la sortie des méthodes. La pile stocke les types primitifs et les références aux objets.

  • Heap (tas) — c'est une zone de mémoire où sont placés les objets et tableaux créés dynamiquement via l'opérateur new. Le tas est partagé par tous les threads, et la gestion de la mémoire y est assurée par le ramasse-miettes (Garbage Collector). Les objets dans le tas vivent tant qu'il existe des références vers eux.

En résumé :

  • Stack : accès rapide, stocke les variables locales et les appels de méthodes, de taille limitée.
  • Heap : stocke les objets, géré par le ramasse-miettes, généralement plus grand et dynamique.

Exemple :

public void exemple() {
    int a = 10; // variable a stockée dans la pile
    MyObject obj = new MyObject(); // référence obj dans la pile, objet dans le tas
}