Duplicar posibles:
Java Thread Garbage collected or notJava hilos y basura colector
Considérese la clase siguiente:
class Foo implements Runnable {
public Foo() {
Thread th = new Thread (this);
th.start();
}
public run() {
... // long task
}
}
Si creamos varios casos de Foo
haciendo
new Foo();
new Foo();
new Foo();
new Foo();
(tenga en cuenta que no mantenemos un puntero a ellos).
Podría aquellos casos ser eliminado por el recolector de basura antes la rosca en
run()
extremos? (En otras palabras: ¿hay alguna referencia a lasFoo
objetos?)Y, en el otro lado, Will aquellos casos ser removidos por el GC después de que el hilo en `run()' extremos, o son estamos desperdiciando memoria ("pérdida de memoria")?
Si 1. o 2. son un problema, ¿cuál es la forma correcta de hacerlo?
Gracias
De hecho, puedes probar esto muy fácilmente. –
@Quaternion, sí, tal vez, pero la redacción de esa otra pregunta es realmente "ofuscada" y difícil de entender, ¿eh? – cibercitizen1
Esto no es un duplicado. La pregunta vinculada no aborda el aspecto de "¿Será basura recogida en absoluto después de completar" (estaba a punto de preguntar esto específicamente). Solo pregunta/responde el aspecto de "no se GC'ed mientras se ejecuta". Esta pregunta aquí es en mi opinión mejor. – bluenote10