Dudas sobre GC

Iniciado por Carlosjava, 26 Julio 2015, 12:52 PM

0 Miembros y 1 Visitante están viendo este tema.

Carlosjava

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?


Código (java) [Seleccionar]
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

Usuario Invitado

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.
"La vida es muy peligrosa. No por las personas que hacen el mal, si no por las que se sientan a ver lo que pasa." Albert Einstein