Qu’entend-on par référence obsolète en Java?

Je lis Effective Java et je suis tombé sur le terme “Référence obsolète”. Quand une référence est-elle obsolète? Je suppose que tous les objects qui ne tombent pas hors de la scope et restnt inutilisés sont des références obsolètes. Corrigez-moi si je me trompe.

Une référence obsolète (telle qu’utilisée dans le livre, bien que ce ne soit pas un terme technique largement utilisé) en est une qui est conservée mais ne sera jamais utilisée, empêchant ainsi l’object auquel il fait référence d’être éligible pour la récupération de place, ce qui provoque une fuite de mémoire.

Une référence obsolète est simplement une référence qui ne sera plus jamais déréférencée.

De Effective Java ,

Conserver des références obsolètes constitutes memory leaks en Java. Ceci est également qualifié de rétention d’object non intentionnelle.

Supprimer une référence pour supprimer des références obsolètes à un object est une bonne chose, mais il ne faut pas en faire trop. Le meilleur moyen d’éliminer une référence obsolète est de réutiliser la variable dans laquelle elle était contenue ou de la laisser tomber en dehors de la scope.

Par exemple, pour supprimer une référence obsolète,

 public Object pop() { if (size == 0) throw new EmptyStackException(); Object result = elements[--size]; elements[size] = null; // Eliminate obsolete reference return result; } 

Tu as raison. Fondamentalement, une référence obsolète est quelque chose qui n’affecte pas le stream ultérieur du programme et doit être définie sur null pour faciliter la récupération de place.

Par exemple ;

Ssortingng a = “une valeur”; . . . . . . // quelques traitements ici // une fois cette opération effectuée a = null; // a est une référence obsolète

Les objects inutilisés, qui ont toujours les références (peuvent ne pas être intentionnelles) et ces références ne sont pas référencés par votre application / programme / code, alors cette référence est une référence obsolète. comme la référence est toujours la leur pour ces objects inutilisés, GC, n’est pas possible pour ces objects et les objects qui se trouvent à l’intérieur de ces objects, et cela conduit à des problèmes de fuite de mémoire.