Ciò che sto chiedendo potrebbe essere una domanda stupida, quindi scusatemi per quello. così si va in questo modo:Questo oggetto java è idoneo per la garbage collection in List
List<Boss> bossList = new ArrayList<Boss>();
Boss b = null;
for(Employee e : List<Employee> myList){
b = new Boss();
b.setEmployee(e);
bossList.add(b);
b = null;
}
Quindi, in scenario di cui sopra, sto creando molti oggetti Boss e poi de-referenziamento li (lo so non ho bisogno di scrivere "b = null", ma io lo ha fatto per chiarezza della mia domanda). Nello scenario normale, li avrei marcati alla garbage collection, facendo questo, ma perché in questo scenario, sto aggiungendo quegli oggetti Boss nella collezione List, sono contrassegnati per GC o no? Se no, allora perché? E in che modo la raccolta di elenchi funziona internamente per contenere i riferimenti per ciascun oggetto aggiunto, in modo da evitare la garbage collection?
[EDIT]
La portata della domanda è limitata solo ai singoli oggetti Boss creati in for
ciclo, se si considera che questo metodo restituisce il riferimento della lista con il mondo esterno.
L'oggetto stesso, che viene inserito nell'elenco, non è ovviamente disponibile per GC poiché esiste ancora un riferimento ad esso, anche se annulli 'b'. – NilsH
Un oggetto non può essere garbage collector se esiste un modo nello stato corrente del programma per essere raggiunto (escluso tramite la classe speciale WeakReference e le sue classi correlate). Un riferimento, non importa dove, dal codice in tempo reale è sufficiente. – Patashu