Dal Java API doc:Quando il thread in Java viene rimosso dalla memoria?
La Java Virtual Machine continua ad eseguire le discussioni fino seguente verifica:
Tutti i thread che non sono thread demoni sono morti, o restituendo dalla chiamata al eseguire il metodo o lanciando un'eccezione che si propaga oltre il metodo run.
Spero che la mia ipotesi sia corretta che una volta che il thread termina il suo metodo run()
diventa idoneo per la garbage collection. Nello stesso contesto io sono solo curioso di sapere:
- Se non diventa per la garbage collection dopo il ritorno dal
run()
, se una impostare il suo riferimento allanull
di farlo? - Essere idonei per la garbage collection non significa necessariamente che l'oggetto verrà rimosso dalla memoria. È a esclusiva discrezione di il sistema operativo sottostante/JVM quando viene raccolto. Ma come si può essere sicuri (tramite un programma Java o uno strumento esterno) che l'oggetto sia completamente rimosso dalla memoria ?
- Se un thread è morto dopo aver completato il suo metodo run(), perché posso ancora essere in grado di eseguire
isAlive()
ogetState()
nello stesso oggetto thread ? Entrambe le chiamate restituiscono rispettivamentefalse
e .
voto per le radici GC – ciamej