"¡Hola, amigo!"

"Hola, Ellie. ¿Tienes algo interesante que decirme?"

"Hoy hablaremos sobre cuánto tiempo permanece un objeto en la memoria, también conocido como la vida útil del objeto. Después de que se crea un objeto, existe (vive) siempre que al menos una variable almacene su dirección (hay al menos una referencia a él). Si no hay más referencias, el objeto muere. Aquí hay algunos ejemplos:"

public class MainClass
{
   public static void main (String[] args)
   {
    Tommy
     Cat cat = new Cat("Tommy");
     cat = null;
    
    Sammy
     Cat cat1 = new Cat("Sammy");
    Missy
    Cat cat2 = new Cat("Missy");
    cat2 = cat1;
    
    Ginger
    cat1 = new Cat("Ginger");
    cat2 = null;
    
    
   }
}

"El objeto Tommy existe solo durante una línea desde su creación. La única variable que hace referencia al objeto se establece en nulo en la línea siguiente, por lo que la máquina virtual de Java (JVM) destruye el objeto".

"El objeto Sammy se almacena en la variable cat1 después de que se crea. O, más exactamente, la variable almacena una referencia a él. Un par de líneas más tarde, esta referencia se copia en cat2 . Luego se guarda una referencia a otro objeto en cat1 . Ahora, solo cat2 hace referencia a Sammy . Finalmente, la última referencia restante al objeto se establece en nulo en la última línea del método principal ".

"El objeto Missy existe solo durante una línea después de su creación. En la línea siguiente, la variable cat2 se establece en otro valor y se pierde la referencia a Missy . Ya no se puede acceder al objeto, por lo que se considera basura por parte del sistema (es decir, el objeto está muerto)."

"Una vez creado, el objeto Ginger existe hasta que finaliza el método. Al final del método, la variable cat2 se destruye y Ginger se destruye inmediatamente después".

"Veo."

"Pero si creamos un objeto Cat dentro de un método y almacenamos una referencia a él en una variable de instancia, entonces el objeto Cat existirá siempre que otro objeto que todavía esté vivo haga referencia a él".

"En realidad, un objeto no suele ser destruido de inmediato por el sistema. La máquina virtual de Java realiza una 'recolección de basura' de vez en cuando, destruyendo objetos que se han marcado para su eliminación. Más sobre ese proceso más adelante".

"Y, si ya no queremos que una variable haga referencia a un objeto, podemos establecerla en nulo o asignarle una referencia a otro objeto".