? Java utilise un système de collecte des ordures pour la gestion de la mémoire. Bien que cela prend une charge exceptionnelle hors du développeur - il n'a plus à assurer objets sont retirés manuellement à partir de la mémoire quand ils ne sont plus en usage - il peut aussi enlever certaines fonctionnalités que les développeurs d'autres origines peuvent être habitués. Alors que la fonctionnalité finaliser n'est pas exactement le même que le C + + destructor , il peut être considéré comme le plus proche de l' analogique au langage Java fournit . Présentation rapide de Garbage Collection
Collecte des ordures ménagères
est l'un des sujets les plus avancées en programmation Java. Strictement parlant , les développeurs Java peuvent aller toute leur carrière sans jamais avoir besoin d'en savoir beaucoup sur le garbage collector et comment il fonctionne . Essentiellement, chaque objet créé dans un programme Java est inscrit sur le runtime Java, avec un comptage de tous les endroits, il ya une référence existante à cet objet. Quand un objet n'est plus mentionné par d'autres objets , le système le marque pour la collecte , et la prochaine fois que le garbage collector s'exécute, il supprime cet objet.
Gestion de la mémoire de base en C + + < br > Photos
les choses sont différentes dans d'autres langages de programmation tels que C + + , par exemple. En C + + , le développeur contrôle lorsqu'un objet est supprimé de la mémoire , par opposition au système. Ceci est connu comme « la gestion de la mémoire déterministe », et il a à la fois ses avantages et ses inconvénients. Le côté positif de cette première est que le développeur ne sait exactement quand dans le code de l'objet est supprimé. Cependant, il est extrêmement facile de supprimer un objet qui peut être encore en usage ailleurs dans le code.
Destructeurs et finaliser
En C + + , les développeurs peuvent ajouter un destructeur d' une classe , qui est une méthode qui est appelée chaque fois qu'un objet est supprimé. Cela permet au développeur d'exécuter du code lorsque l'objet n'est plus nécessaire , peut-être à supprimer ses enfants ou pour nettoyer les ressources . En Java , le système fournit la méthode finaliser , que les développeurs peuvent substituer pour fournir des fonctionnalités similaires. La principale différence est que la méthode est appelée chaque fois finaliser le runtime détermine que l'objet n'a pas d'autres références et peut être collecté .
À utiliser avec prudence
Bien finaliser pouvez fournir les mêmes fonctionnalités de C + + destructor , il faut vraiment être utilisé avec précaution . D'une manière générale , tout en redéfinissant la méthode finaliser peut être parfaitement bien pour la plupart des situations , vous ne devriez pas compter sur elle pour s'assurer que les ressources sont nettoyées à un moment donné . Par exemple, si vous disposez d'une connexion de base de données ouverte à un objet qui a fermé ses portes en finaliser , vous pouvez toujours potentiellement créer trop de connexions à la base de données et passer la limite de la base de données avant le garbage collector a finalisé tous les objets - même si vous ne ont plus de références à eux n'importe où.