Garbage Collection en Java: tout ce que vous devez savoir



Cet article sur le garbage collection en Java vous donne une idée claire de son fonctionnement, de ses types et des différentes méthodes sous garbage collection en Java

est un langage de programmation à usage général et si vous rencontrez une situation où il y a des données inutilisées dans votre programme et que vous ne savez pas comment les gérer, Garbage Collection en Java est pratique. J'écris donc cet article pour vous aider à gérer ces fonctions.

Je couvrirai les sujets dans l'ordre suivant:





différence entre css et css3

Commençons!

Qu'est-ce que Garbage Collection en Java?

En Java, les programmeurs sont confrontés au problème de devoir détruire le objets qui sont hors d'usage. Mais avec le Garbage Collector, cela peut être facilement résolu. L’objectif principal de ce garbage collector est de libérer de la mémoire du tas en détruisant les objets ne contenant pas de référence. La technique est connue sous le nom de Collecte des ordures.



Il est également considéré comme un programme qui permet d'effectuer une gestion automatique de la mémoire. Quand sont exécutés sur la JVM, les objets sont créés sur le tas, qui est en fait une partie de la mémoire dédiée au programme. Finalement, certains objets ne seront plus nécessaires. La Éboueur trouve ces objets inutilisés et les supprime pour libérer de la mémoire.

  • Les programmes qui ne désallouent pas de mémoire peuvent finir par s'arrêter lorsqu'il n'y a plus de mémoire à allouer dans le système. On dit que tous 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 d'un programme, éliminant la nécessité de désallouer de la mémoire et évitant ainsi les fuites de mémoire.
  • Des méthodes comme libre() en C et effacer() en C ++ sont utilisés mais, en Java, il est exécuté automatiquement. Donc, offre une meilleure gestion de la mémoire.

Voyons maintenant comment fonctionne ce garbage collection automatique en Java.

Remarque : Un objet est dit éligible pour le garbage collection ssil est inaccessible.



Comment fonctionne le nettoyage de la mémoire?

Le nettoyage de la mémoire est un processus de travail avec la mémoire du tas et aussi marque ou identifier les objets inaccessibles et les détruire par compactage.

Le ramassage des ordures en Java est un processus automatique et le programmeur n'a pas à marquer explicitement les objets à supprimer. La mise en œuvre vit principalement dans le . Chaque JVM peut implémenter le garbage collection. La seule exigence est qu'il doit répondre à la spécification JVM.

Même s'il existe de nombreuses JVM disponibles, Oracle Point chaud est de loin le plus courant car il offre un ensemble robuste et mature d'options de récupération de place.

  • Le HotSpot dispose de plusieurs garbage collector optimisés pour divers cas d'utilisation, et tous les garbage collector suivent le même processus de base.
  • Dans la toute première étape, objets non référencés sont identifiés et marqués comme prêts pour le ramassage des ordures.
  • Dans la deuxième étape, les objets marqués sont supprimés. Si vous le souhaitez, la mémoire peut être compactée une fois que le garbage collector a supprimé des objets, de sorte que les objets restants se trouvent dans un bloc contigu au début du tas. Le processus de compactage facilite l'allocation de mémoire aux nouveaux objets de manière séquentielle après le bloc de mémoire alloué aux objets existants.

Tous les garbage collector de HotSpot implémentent une stratégie de collecte générationnelle qui catégorise les objets par âge. La logique derrière le garbage collection générationnel est que la plupart des objets sont de courte durée et seront prêts pour le garbage collection peu de temps après leur création.

Voyons maintenant quels sont les différents types de ramasse-miettes.

Types de ramasse-miettes

La JVM fournit quatre garbage collector différents, tous générationnels. Chacun a ses propres avantages et limites. Le choix du ramasse-miettes à utiliser appartient à l'utilisateur et il peut y avoir de nombreuses différences dans le débit et les pauses d'application.

convertir la date de la chaîne en date en java

Il existe notamment 4 types de ramasseurs d'ordures.

  • Collecteur de mémoire série (GC) :Tous les événements de récupération de place sont exécutés en série dans un seul thread. Le compactage est exécuté après chaque garbage collection.
  • GC parallèle / débit: Plusieurs threads sont utilisés pour le garbage collection mineur / petit. Un seul thread est utilisé pour le garbage collection majeur et le compactage de l'ancienne génération. En outre, la variante Parallel utilise plusieurs threads pour le garbage collection majeur et le compactage de l'ancienne génération.
  • Collecteur CMS :Plusieurs threads sont utilisés pour le garbage collection petit / mineur en utilisant le même algorithme que Parallel. La majorité du garbage collection est multithread, mais le CMS s'exécute simultanément avec les processus d'application pour minimiser les événements d'application. Aucun compactage n'est effectué.
  • Collecteur G1 :Ce garbage collector est essentiellement destiné à remplacer le CMS. Il est parallèle et simultané comme le CMS, mais il fonctionne très différemment par rapport aux anciens garbage collector.

Comprenons les avantages du nettoyage de la mémoire en Java.

Avantages

  • Le plus grand avantage du garbage collection Java est qu'il gère la suppression d'objets inutilisés ou de certains objets inaccessibles pour libérer des ressources mémoire.
  • Garbage Collection est maintenant un nouveau composant standard de nombreux langages de programmation populaires.
  • Cela rend la mémoire Java efficace. C'est parce que le garbage collector supprime les objets non référencés de la mémoire du tas.
  • Il est fait automatiquement par le garbage collector qui fait partie de JVM.

Les meilleures pratiques

La meilleure approche pour s'adapter au garbage collection Java consiste à définir des indicateurs sur la JVM. Les indicateurs ont la capacité d'ajuster le ramasse-miettes à utiliser. Cela aide à en faire le mieux adapté pour le traitement backend où de longues pauses pour le ramassage des ordures sont acceptables.

Une autre chose à noter ici est que le garbage collector CMS est conçu pour minimiser les pauses, ce qui le rend idéal pour les applications GUI où la réactivité est très importante. Un réglage fin supplémentaire peut être effectué en modifiant la taille du tas ou de ses sections et en mesurant l'efficacité du ramasse-miettes.

Jetons un œil à ce programme.

class Edureka {int a int b public void setData (int c, int d) {a = cb = d} public void showData () {System.out.println ('Value of a =' + a) System.out.println ('Value of b =' + b)} public static void main (String args []) {Edureka e1 = new Edureka () Edureka e2 = new Edureka () e1.setData (1,2) e2.setData (3, 4) e1.showData () e2.showData () // Edureka e3 // e3 = e2 //e3.showData () // e2 = null //e3.showData () // e3 = null //e3.showData ()}}

Dans ce cas, les deuxdes objets et deux variables de référence sont créés. Si vous ajoutez une autre commande e3 = Null,deux variables de référence pointeront vers le même objet. Et s'il n'y a pas de référence à la variable, e3 = e2e3.showData () À ce stade, il n'y a aucune référence pointant vers l'objet et il devient éligible pour le garbage collection.

Cela nous amène à la fin de cet article «Garbage Collection in Java». Nous avons appris à supprimer les objets inutilisés du tas et les différents types de collection.

Si vous avez trouvé cet article sur «Garbage Collection in Java», consultez le par Edureka, une entreprise d'apprentissage en ligne de confiance avec un réseau de plus de 250 000 apprenants satisfaits répartis dans le monde entier. Nous sommes là pour vous aider à chaque étape de votre voyage, nous proposons un programme conçu pour les étudiants et les professionnels qui souhaitent devenir développeur Java.

Vous avez une question pour nous? Veuillez le mentionner dans la section commentaires de ce «Garbage Collection in Java ' et nous vous répondrons dans les plus brefs délais.