Un autre bon article sur le sujet :
Objets de référence Java ou comment j'ai appris à arrêter de m'inquiéter et à aimer OutOfMemoryError avec de beaux diagrammes
Extrait :
Comme vous pouvez le deviner, l'ajout de trois nouveaux états optionnels au diagramme du cycle de vie d'un objet est une véritable catastrophe.
Bien que la documentation indique une progression logique de "fortement accessible" à "récupéré" en passant par "faible" et "fantôme", la progression réelle dépend des objets de référence créés par votre programme.
Si vous créez un WeakReference
mais ne crée pas de SoftReference
un objet passe directement de la catégorie "fortement accessible" à la catégorie "faiblement accessible", puis à la catégorie "finalisé" et enfin à la catégorie "collecté". cycle de vie des objets, avec des objets de référence
Il est également important de n'oubliez pas que tous les objets ne sont pas attachés à des objets de référence - en fait, très peu d'entre eux doivent l'être. .
Un objet de référence est une couche d'indirection Vous devez passer par l'objet de référence pour atteindre l'objet référencé, et il est clair que vous ne voulez pas de cette couche d'indirection dans votre code.
En fait, la plupart des programmes utilisent des objets de référence pour accéder à un nombre relativement faible d'objets créés par le programme.
Références et référents
Un objet de référence fournit une couche d'indirection entre votre code de programme et un autre objet, appelé le référent.
Chaque objet de référence est construit autour de son référent, et fournit une méthode get() pour accéder au référent. Une fois que vous avez créé une référence, vous ne pouvez pas changer son référent. Une fois que le référent a été collecté, la méthode get() renvoie null. relations entre le code de l'application, la référence douce/faible et le référent
Encore plus d'exemples : Programmation Java : Paquet "Références
texte alternatif http://www.pabrantes.net/blog/space/start/2007-09-16/1/referenceTypes.png
-
Cas 1 : C'est le cas normal où l'on dit que l'objet est fortement atteignable.
-
Cas 2 : Il y a deux chemins vers l'objet, donc le plus fort est choisi, c'est celui qui a la référence forte, donc l'objet est fortement atteignable.
-
Cas 3 : Une fois encore, il existe deux chemins vers l'objet, le plus fort étant la référence faible (puisque l'autre est une référence fantôme), on dit donc que l'objet est faiblement accessible.
-
Cas 4 : Il n'y a qu'un seul chemin et le lien le plus faible est une référence faible, l'objet est donc faiblement atteignable.
-
Cas 5 : Un seul chemin et le lien le plus faible est la référence fantôme ; l'objet est donc accessible de manière fantôme.
-
Cas 6 : Il y a maintenant deux chemins et le chemin le plus fort est celui avec une référence souple, donc on dit que l'objet est maintenant accessible de manière souple.
3 votes
Connexe mais de portée plus étroite : stackoverflow.com/questions/299659/