Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Carlosjava en 26 Julio 2015, 12:52 PM

Título: Dudas sobre GC
Publicado por: Carlosjava en 26 Julio 2015, 12:52 PM
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
Título: Re: Re: Dudas sobre GC
Publicado por: Usuario Invitado en 26 Julio 2015, 17:22 PM
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.