Which is the earliest line in the following code after which the object created on the //1 can be garbage collected, assuming no compiler optimizations are done?
public class NewClass
{
static String enterTheDragon()
{
String a = new String("hello");
String b = new String("world !"); // 1
String c = new String(a + b + ""); // 2
String d = b; // 3
b = a; // 4
d = a; // 5
return c; // 6
}
public static void main(String args[])
{
String s = enterTheDragon(); // 7
System.out.println(s); // 8
}
}
la respuesta es la linea 5 pero no entiendo porque, necesitaria q alguien me lo explicara q es exactamente lo q hace el garbage collector, gracias
Mod: Los códigos deben ir en GeSHi
1. String 'b' es creado.
2. String 'c' es creado.
3. String 'd' referencia a 'b'.
4. String b referecia a 'a'.
5. String d referencia a 'a'.
¿En la línea 5 quién referencia al objeto b?
Nadie. Es por esto que en la línea 5 el objeto b es candidato a recolección. Una variable u objeto es candidato a recolección cuando
ningún otra variable u objeto hace referencia a él. Por lo tanto, cuando d deja de apuntar a b, automáticamente b se vuelve candidato para recolección.