c'est-à-dire, dans et p> a1 code> être déposé recueilli ou est la référence à
A1.S CODE> Permettez-le d'être collecté (et je devrais plutôt faire une copie profonde,
A2.S = nouvelle chaîne (A1.S) code>)? P> < p> Merci beaucoup à l'avance! P> P>
4 Réponses :
Etant donné que IE a code> n'a qu'une référence forte> to
à
s code>,
a2.s code> pointant vers
A1. s code> n'affecterait pas strong>
A1 code> p>
a1 code> est admissible à GC, mais l'objet mentionné par
A2.S code> (ou
A1.S code>) ne sera pas éligible Pour GC. P>
Si un objet voir Ce lien Pour plus d'informations. p> est contenant une référence d'un autre objet
code> et lorsque vous définissez la référence de l'objet conteneur
null code>, enfant ou contenue
objet
< / code> devient automatiquement admissible à la collecte des ordures. P>
@Marounmaroun fait-il bien pour les littéraux string? c'est-à-dire que la chaîne littéral s code> est toujours référencée par
A2 code> .. 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)
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;
Vous créez ici Tout d'abord, vous attribuez une valeur de Vous pouvez également consulter ce blog pour Collection de la poubelle : P> objet A code> comme
A1 code> et
A2 code>. p>.
A1 code> à
A2 code> .so après la définition de la valeur sur
A2 code>,
A1 code> A1 code> est autorisé pour GC. Mais il n'y aura pas de changement dans
référence A2 code>. P>