Qu'est-ce que le nettoyage de la mémoire en Java?

Table des matières:

Anonim

Qu'est-ce que le nettoyage de la mémoire en Java?

Le nettoyage de la mémoire en Java est un processus par lequel les programmes exécutent 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 la mémoire des objets est réalisée à l'aide du nouvel opérateur 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 pas de références à un objet, il est supposé qu'il n'est plus nécessaire et la mémoire occupée par l'objet peut être récupérée. Il n'y a aucun besoin explicite de détruire un objet car Java gère automatiquement la désallocation.

La technique qui accomplit cela est connue sous le nom de Garbage Collection . Les programmes qui ne désallouent pas de mémoire peuvent éventuellement se bloquer lorsqu'il n'y a plus de mémoire dans le système à allouer. On dit que ces programmes ont des fuites de mémoire.

Le nettoyage de la mémoire en Java se produit automatiquement pendant la durée de vie du programme, éliminant 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 la section Heap de la mémoire. Plus d'informations à ce sujet dans un didacticiel ultérieur.

Exemple: pour apprendre le mécanisme de ramasse-miettes en Java

Étape 1) Copiez le code suivant dans un éditeur.

élève de la classe {int a;int b;public void setData (int c, int d) {a = c;b = d;}public void showData () {System.out.println ("Valeur de a =" + a);System.out.println ("Valeur de b =" + b);}public static void main (String args []) {Student s1 = nouvel étudiant ();Student s2 = nouvel étudiant ();s1.setData (1,2);s2.setData (3,4);s1.showData ();s2.showData ();// Student s3;// s3 = s2;//s3.showData ();// s2 = nul;//s3.showData ();// s3 = nul;//s3.showData ();}}

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

É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.

Étape 5) Décommentez les lignes 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.

Étape 7) Décommentez les lignes 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'y a aucun moyen de le récupérer.

Comment supprimer un objet en Java?

1) Si vous souhaitez rendre votre objet éligible pour le nettoyage de la mémoire, affectez sa variable de référence à null.
2) Les types primitifs ne sont pas des objets. Ils ne peuvent pas recevoir de valeur nulle.