12
votes

Un élément sera-t-il recueilli un poubelle s'il y a une référence à son domaine?

c'est-à-dire, dans xxx

et xxx

a1 être déposé recueilli ou est la référence à A1.S Permettez-le d'être collecté (et je devrais plutôt faire une copie profonde, A2.S = nouvelle chaîne (A1.S) )? < p> Merci beaucoup à l'avance!


0 commentaires

4 Réponses :


4
votes

Etant donné que a n'a qu'une référence to à s , a2.s pointant vers A1. s n'affecterait pas A1

IE a1 est admissible à GC, mais l'objet mentionné par A2.S (ou A1.S ) ne sera pas éligible Pour GC.


0 commentaires

11
votes

Si un objet est contenant une référence d'un autre objet et lorsque vous définissez la référence de l'objet conteneur null , enfant ou contenue objet < / code> devient automatiquement admissible à la collecte des ordures.

voir Ce lien Pour plus d'informations.


4 commentaires

@Marounmaroun fait-il bien pour les littéraux string? c'est-à-dire que la chaîne littéral s est toujours référencée par A2 .. donc?


@Marounmaroun ... Votre lien était une très bonne lecture sur le GC de Java. Merci beaucoup!


@sanbhat Les instances de chaîne créées au moment de l'exécution sont soumises à la collection de déchets, comme tous les autres objets.


AFAIK en Java 7, les littéraux à chaîne sont détenus par la classe qui est détenue par le chargeur de classe. Ce n'est que lorsque cela est déchargé la chaîne sera libérée. (Je soupçonne que cela varie entre JVMS)



3
votes

L'objet A1 est admissible à GC car il est maintenant prêt à être null. Mais en tant que chaîne "bla" dans non disponible pour GC car elle a également été référée par A2.S. Donc, seul l'objet A1 est disponible pour GC.

Si c'est le cas P>

a2.s = a1.s;


0 commentaires

1
votes

Vous créez ici Deux références de objet A comme A1 et A2 . .

Tout d'abord, vous attribuez une valeur de A1 à A2 .so après la définition de la valeur sur A2 , A1 A1 est autorisé pour GC. Mais il n'y aura pas de changement dans référence A2 .

Vous pouvez également consulter ce blog pour Collection de la poubelle :


0 commentaires