Eventuali duplicati:
Java Thread Garbage collected or notJava fili e garbage collector
Si consideri la seguente classe:
class Foo implements Runnable {
public Foo() {
Thread th = new Thread (this);
th.start();
}
public run() {
... // long task
}
}
Se creiamo diverse istanze di Foo
facendo
new Foo();
new Foo();
new Foo();
new Foo();
(notare che non manteniamo un puntatore a loro).
Potrebbe quei casi essere rimosso dal garbage collector prima filettatura in
run()
estremità? (In altre parole: esiste alcun riferimento agliFoo
oggetti?)E, nell'altra mano, saranno quei casi rimossi dal GC dopo il filo in `run()' estremità, o sono sprechiamo memoria ("perdita di memoria")?
Se 1. o 2. sono un problema, qual è il modo giusto per farlo?
Grazie
È possibile verificarlo molto facilmente. –
@Quaternion, sì forse, ma la formulazione di quell'altra domanda è davvero "offuscata" e difficile da capire, imho. – cibercitizen1
Questo non è un duplicato. La domanda collegata non affronta l'aspetto di "sarà spazzatura raccolta per niente dopo il completamento" (stavo per chiederlo specificatamente). Richiede solo/risponde all'aspetto di "non sarà GC mentre è in esecuzione". Questa domanda qui è a mio avviso migliore. – bluenote10