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>