À quoi sert Destructor en Java?

Cet article couvre le concept de destructeur en Java avec des exemples mettant en évidence l'importance du destructeur en Java dans n'importe quelle classe Java.

Tout en travaillant avec cours en Java , les constructeurs sont utilisés pour initialiser l'instance d'une classe. La mémoire est allouée à l'objet à l'aide du constructeur mais une fois que le cycle de vie de l'objet est terminé et que l'objet n'est plus utilisé, la mémoire doit être désallouée et libérée. C'est là que le destructeur dans entre en scène. Dans cet article, nous allons découvrir les destructeurs en Java, dans l'ordre suivant:



Qu'est-ce qu'un destructeur?

Un destructeur est un spécial qui est appelé automatiquement dès que le cycle de vie d'un objet est terminé. Un destructeur est appelé pour désallouer et libérer de la mémoire. Les tâches suivantes sont exécutées lorsqu'un destructeur est appelé.



  • Libération des verrous de déverrouillage
  • Fermeture de toutes les connexions ou fichiers de base de données
  • Libérer toutes les ressources du réseau
  • Autres tâches d'entretien ménager
  • Récupération de l'espace de tas alloué pendant la durée de vie d'un objet

Les destructeurs en Java, également appelés finaliseurs, ne sont pas déterministes. L'allocation et la libération de mémoire sont implicitement gérées par le garbage collector en Java .

Les finaliseurs en Java doivent être implicitement appelés car leur appel n'est pas garanti, contrairement aux finaliseurs C # qui sont appelés pendant l'exécution .NET.



Jetons un coup d'œil aux propriétés clés d'un destructeur:

  • La surcharge ou l'héritage n'est pas autorisé
  • Aucune spécification de modificateurs d'accès ou de paramètres
  • Invocation automatique et aucun appel explicite de l'utilisateur
  • Utilisé dans les classes mais pas dans les structures
  • L'ordre de la classe varie de la classe la plus dérivée à la classe la moins dérivée
  • Également appelé lorsque l'instance d'objet n'est plus éligible pour l'accès
  • Utilisé pour libérer des ressources non gérées au lieu des ressources gérées détenues par l'objet

Éboueur

Un garbage collector est un programme qui s'exécute sur le Machine virtuelle Java pour récupérer la mémoire en supprimant les objets qui ne sont plus utilisés ou qui ont terminé leur cycle de vie. Un objet est dit éligible pour le garbage collection si et seulement si l'objet est inaccessible.

Essayons de comprendre le fonctionnement du garbage collection en Java:



Le garbage collection est principalement le processus de marquage ou d'identification des objets inaccessibles et de leur suppression pour libérer la mémoire. L'implémentation réside dans la JVM, la seule exigence est qu'elle réponde aux spécifications de la JVM. Voici les différents types de ramasse-miettes en Java:

  • Collecteur de déchets série
  • Collecteur de mémoire parallèle / à débit
  • Collecteur CMS
  • Collecteur G1

Jetons un coup d'œil à quelques avantages du garbage collection en Java:

  • Il supprime automatiquement les objets inutilisés inaccessibles pour libérer de la mémoire
  • Le garbage collection rend la mémoire Java efficace
  • Il n'est pas nécessaire de l'appeler explicitement car l'implémentation réside dans la JVM
  • Le garbage collection est devenu un composant important et standard de nombreux langages de programmation

Essayons de comprendre pourquoi les destructeurs ne sont pas utilisés en Java.

Constructeur vs destructeur: différence entre un constructeur et un destructeur

Constructeur Destructeur

Un constructeur est utilisé pour initialiser une instance d'une classe

Un destructeur est utilisé pour supprimer ou détruire les objets lorsqu'ils ne sont plus utilisés

Les constructeurs sont appelés lorsqu'une instance d'une classe est créée

Les destructeurs sont appelés lorsqu'un objet est détruit ou libéré

différence entre mutable et immuable

Allocation de mémoire

Libère la mémoire

Une surcharge est possible

La surcharge n'est pas autorisée

Ils sont autorisés à avoir des arguments

Aucun argument ne peut être passé dans un destructeur

Méthode Java Finalize ()

Il devient assez difficile pour tout développeur de forcer l'exécution d'un garbage collector, mais il existe une alternative à cela. Nous pouvons utiliser l'objet. finaliser() méthode qui fonctionne exactement comme un destructeur en Java.

Une méthode Object.finalize () est héritée dans tout Objets Java . Ce n'est pas un destructeur mais est utilisé pour s'assurer ou fournir une sécurité supplémentaire pour garantir l'utilisation de ressources externes comme la fermeture du fichier, etc. avant que le programme ne s'arrête. Vous pouvez l'appeler en utilisant la méthode elle-même ou system.runFinalizersOnExit (true).

L'utilisation de la méthode finalize () est fortement déconseillée car elle peut être très dangereuse et dans certains cas utilisée de manière incorrecte.

Prenons un exemple simple pour montrer comment finalize () peut être utilisé pour appeler le garbage collector.

public class A {public void finalize () jette Throwable {System.out.println ('L'objet est détruit par le garbage collector')} public static void main (String [] args) {A test = new A () test = null System.gc ()}}

Cela nous amène à la fin de cet article où nous avons découvert le Destructor en Java. J'espère que vous êtes clair avec tout ce qui a été partagé avec vous dans ce tutoriel.

Si vous avez trouvé cet article sur 'Destructor In Java' pertinent, consultez le 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 et proposer un programme conçu pour les étudiants et les professionnels qui souhaitent devenir développeur Java. Le cours est conçu pour vous donner une longueur d'avance dans la programmation Java et vous former aux concepts Java de base et avancés ainsi que divers comme Hiberner & .

type de fonction en sql

Si vous rencontrez des questions, n'hésitez pas à poser toutes vos questions dans la section commentaires de «Destructor In Java» et notre équipe se fera un plaisir de vous répondre.