2013-07-02 5 views

risposta

11

Se un object contiene un riferimento di un altro object e quando si imposta il riferimento di oggetto contenitore null, bambino o contenuti object diventa automaticamente per la garbage collection.

Vedere this link per ulteriori informazioni.

+0

@MarounMaroun fa questo tiene bene per stringhe letterali? cioè, lo String letterale 's' è ancora referenziato da' a2' .. quindi? – sanbhat

+1

@ MarounMaroun ... Il tuo collegamento è stato un'ottima lettura su GC di Java. Molte grazie! – dotwin

+3

@sanbhat Le istanze di String create in fase di runtime sono soggette alla garbage collection proprio come ogni altro oggetto. –

4

Dal A ha solo un riferimento -s, a2.s punta a a1.snon inciderebbea1 s' garbage collection.

i.e a1 è idoneo per GC, ma l'oggetto indicato da a2.s (o a1.s) non sarà idoneo per GC.

+1

alcuna ragione per il -1 –

3

L'oggetto A1 è idoneo per GC poiché ora è impostato su null. Ma come stringa "bla" in non disponibile per GC perché anche riferito da a2.s. Quindi solo a1 oggetto è disponibile per GC.

Se questo è il caso

A a1 = new A(); 
a1.s = "bla"; 
A a2 = new A(); 
a1 = null; 

allora sia oggetto a1 e "bla" è disponibile per GC. Poiché tutti i riferimenti di "bla" è stato rimosso, ma ora il caso è

a2.s = a1.s; 

a2 sta riferendosi alla stessa stringa "bla". Così stringa è disponibile in stringpool non per GC

1

Qui si sta creando due riferimenti di Object A come a1 e a2.

In primo luogo, si stanno assegnando valore a1 a a2 .Così dopo aver impostato il valore di a2, a1 è consentito per GC. Ma non ci saranno cambiamenti in reference a2.

È inoltre possibile controllare questo blog per Garbage Collection:

Problemi correlati