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?
- Différence entre constructeur et destructeur
- Méthode Java finalize ()
- Exemple
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.