Si deux objets du tas se référent l'un à l'autre mais ne sont pas liés à une variable de référence, ces objets sont-ils éligibles pour la récupération de place?Comportement de collecte de place avec des références cycliques isolées?
Répondre
Oui, ils sont. Fondamentalement, le GC part de "racines connues" (variables statiques, variables locales de toutes les trames de pile dans les threads alll) pour trouver des objets qui ne peuvent pas être récupérés. S'il n'y a aucun moyen d'accéder à un objet à partir d'une racine, il est admissible à la collecte.
EDIT: Tom a ceci, que je pensais que valait la peine levée dans la réponse elle-même:
Techniquement, les variables statiques ne sont pas racines - ils sont référencés par les classes qui sont référencés par les chargeurs de classe qui sont référencés par les classes référencées par l'objet qui sont référencées par les références racines.
La différence est susceptible d'être hors de propos plus du temps, mais il est bon de savoir :)
Check out out: How does Java Garbage Collector Handle Self References.
Vous pouvez vérifier java.lang.ref.WeakReference
Skeet est sur l'argent, comme d'habitude. J'ajouterai seulement que la situation que vous décrivez est la raison pour laquelle le comptage des références (une stratégie standard avec des pointeurs intelligents C++ au début) n'est pas utilisé.
- 1. Comportement étrange de récupération de place avec Websphere Portal Server
- 2. Références croisées et récupération de place
- 3. Détection de dépendances cycliques avec Maven
- 4. Est-ce que PyS60 a une collecte de déchets fiable?
- 5. Conception de table pour les dates cycliques
- 6. Espaces de noms cycliques en C#
- 7. Configurer des références de serveur de développement
- 8. Constructeur avec des références n'assignant pas correctement?
- 9. Construire avec msbuild et définir dynamiquement des références de projet
- 10. cours de codage avec le même comportement + comportement unique
- 11. Collecte de données SQL avec retour à l'application Web asp.net
- 12. L'utilisation et la collecte des ordures
- 13. Édition sur place avec Asp.net ajax
- 14. Collecte des ordures ménagères Core Foundation objets
- 15. Atomicité des références d'objet
- 16. Identification des références de service Web ASP.NET
- 17. NSWorkspace NotificationCenter pas l'envoi de notifications en collecte des ordures
- 18. Conserver des références d'objet
- 19. MySQL: Collecte des enregistrements de plusieurs requêtes en un résultat
- 20. Collecte des ordures ménagères pour ValueType enrubanneuse
- 21. C# héritant de collecte et de sérialisation
- 22. Collecte des ordures dans le rendement Méthodes
- 23. FluentNHibernate hasMany pas la collecte de remplissage
- 24. Coût de l'utilisation de références faibles en Java
- 25. Manipulation des références de projet lors de l'utilisation de contrôle de version avec plusieurs projets
- 26. Composant personnalisé avec comportement de type combobox
- 27. Pourquoi la récupération de place est-elle requise pour l'optimisation des appels de queue?
- 28. comportement drôle avec tabNavigator
- 29. Utilisation d'iBATIS.NET avec des interfaces de collecte personnalisées génériques et Unity
- 30. Mise en place d'un compteur de visiteurs
Techniquement, les variables statiques ne sont pas des racines - elles sont référencées par des classes qui sont référencées par des chargeurs de classes qui sont référencés par des classes référencées par un objet qui sont référencées par des références racines. –
@Tom: Bon appel. Modification ... –