2009-10-27 6 views
1

J'ai un objet composite (arbre) avec des relations parent-enfant. L'arbre peut être jusqu'à n niveaux (disons par exemple 10-12 niveaux)relation parent-enfant dans un objet composite?

Supposons maintenant que je doive supprimer un objet au niveau 6 de la hiérarchie Si je pointe sa référence à null (tout en laissant l'objet enfant intact) en Java alors qu'arrive-t-il aux objets enfants en dessous (sont-ils disponibles pour la récupération de place).

Répondre

0

Uniquement si vous définissez l'objet lui-même sur null ou s'il est hors de portée.

+0

C'est faux. Vous ne pouvez pas définir "objet lui-même à null", vous pouvez seulement définir sa référence; et c'est la référence qui peut sortir du cadre. Aucun de ces événements ne rend l'objet éligible au GC; il peut y avoir d'autres références à cela. – ChssPly76

+0

Merci pour la leçon de sémantique - la dernière fois que j'ai vérifié l'objet o = null travaillé. – Gandalf

+1

Vraiment? 'Object o1 = nouvel objet(); Objet o2 = o1; o1 = nul; Ça marchera? Pensez-vous toujours que c'est juste de la sémantique? – ChssPly76

2

Les objets enfants seront récupérés par le garbage collection si la référence du parent était la seule référence en direct à l'objet enfant dans l'application entière.

+0

Ce n'est pas tout à fait vrai. Tout d'abord, ils deviendront ** éligibles ** pour la collecte des ordures - on ne sait pas quand ** et ** si ** ils seront effectivement collectés. Deuxièmement, vous pouvez très bien avoir d'autres références à l'objet enfant et l'avoir toujours éligible pour GC - la clé est que les références doivent être ** inaccessibles **. – ChssPly76

+0

Vraie à propos de la partie éligible, pas que cela pèse beaucoup d'un pov de développeurs, car c'est aussi loin que vous pouvez jamais faire la collecte des ordures vous-même. Aussi vrai sur la partie inaccessible mais c'est pourquoi je l'ai appelé une référence "live" ;-). – NickDK

+0

Assez juste. "Live" pourrait être mal interprété comme "non nul", c'est pourquoi j'ai commenté. – ChssPly76

Questions connexes