Qu’est-ce que le garbage collection en Java ?

Qu’est-ce que le garbage collection en Java ?

Collecte des déchets en Java est un processus par lequel les programmes effectuent automatiquement la gestion de la mémoire. Le Garbage Collector (GC) trouve les objets inutilisés et les supprime pour récupérer la mémoire. En Java, l'allocation dynamique de mémoire des objets est réalisée à l'aide de l'opérateur new qui utilise de la mémoire et la mémoire reste allouée jusqu'à ce qu'il y ait des références pour l'utilisation de l'objet.

Lorsqu'il n'y a aucune référence à un objet, celui-ci est supposé n'être plus nécessaire et la mémoire occupée par l'objet peut être récupérée. Il n'est pas explicitement nécessaire de détruire un objet car Java gère automatiquement la désallocation.

La technique qui permet d'y parvenir est connue sous le nom de Collecte des ordures. Les programmes qui ne libèrent pas de mémoire peuvent éventuellement planter lorsqu'il n'y a plus de mémoire à allouer dans le système. Ces programmes auraient fuites de mémoire.

Collecte des déchets à Java se produit automatiquement pendant la durée de vie du programme, éliminant ainsi le besoin de désallouer de la mémoire et évitant ainsi les fuites de mémoire.

En langage C, il est de la responsabilité du programmeur de désallouer la mémoire allouée dynamiquement à l'aide de la fonction free(). C'est là que mène la gestion de la mémoire Java.

Remarque : Tous les objets sont créés dans Section de tas de mémoire. Plus d'informations à ce sujet dans un didacticiel ultérieur.

Exemple : pour apprendre le mécanisme de récupération de place en Java

Étape 1) Copiez le suiviwing coder dans un éditeur.

class Student{
int a;
int b;
  public void setData(int c,int d){
    a=c;
    b=d;
  }
  public void showData(){
    System.out.println("Value of a = "+a);
    System.out.println("Value of b = "+b);
  }
  public static void main(String args[]){
    Student s1 = new Student();
    Student s2 = new Student();
    s1.setData(1,2);
    s2.setData(3,4);
    s1.showData();
    s2.showData();
    //Student s3;
    //s3=s2;
    //s3.showData();
    //s2=null;
    //s3.showData();
    //s3=null;
    //s3.showData();
  }
}

Étape 2) Enregistrez, compilez et exécutez le code. Comme le montre le diagramme, deux objets et deux variables de référence sont créés.


Mécanisme de collecte des déchets

Étape 3) Décommentez la ligne #20,21,22. Enregistrez, compilez et exécutez le code.

Étape 4) Comme le montre le diagramme ci-dessous, deux variables de référence pointent vers le même objet.

Mécanisme de collecte des déchets

Étape 5) Décommentez les lignes n°23 et 24. Compilez, enregistrez et exécutez le code

Étape 6) Comme le montre le diagramme ci-dessous, s2 devient nul, mais s3 pointe toujours vers l'objet et n'est pas éligible pour le garbage collection Java.


Mécanisme de collecte des déchets

Étape 7) Décommentez les lignes n°25 et 26. Enregistrez, compilez et exécutez le code

Étape 8) À ce stade, il n'y a aucune référence pointant vers l'objet et devient éligible pour le garbage collection. Il sera supprimé de la mémoire et il n’existe aucun moyen de le récupérer.

Apprendre le éboueur

Comment supprimer un objet en Java ?

1) Si vous souhaitez rendre votre objet éligible au Garbage Collection, attribuez sa variable de référence à null.

2) Les types primitifs ne sont pas des objets. Ils ne peuvent pas être attribués à null.

Comment supprimer un objet en Java