Isla de aislamiento en Java

En Java, la destrucción de objetos está a cargo del módulo Recolector de basura y los objetos que no tienen ninguna referencia a ellos son elegibles para la recolección de basura. Garbage Collector es capaz de identificar este tipo de objetos. Ahora analicemos qué significa exactamente Island of Isolation de la siguiente manera:

  • El objeto 1 hace referencia al objeto 2 y el objeto 2 hace referencia al objeto 1. Ningún otro objeto hace referencia al objeto 1 ni al objeto 2. Esa es una isla de aislamiento.
  • Básicamente, una isla de aislamiento es un grupo de objetos que se referencian entre sí pero que ningún objeto activo de la aplicación hace referencia a ellos. Estrictamente hablando, incluso un solo objeto sin referencia es también una isla de aislamiento.

Ejemplo:

Java

// Java Program to Illustrate Island of Isolation
 
// Main class
public class GFG {
 
    GFG i;
 
    // Method 1
    // Main driver method
    public static void main(String[] args)
    {
 
        // Creating object of class inside main() method
        GFG t1 = new GFG();
        GFG t2 = new GFG();
 
        // Object of t1 gets a copy of t2
        t1.i = t2;
 
        // Object of t2 gets a copy of t1
        t2.i = t1;
 
        // Till now no object eligible
        // for garbage collection
        t1 = null;
 
        // Now two objects are eligible for
        // garbage collection
        t2 = null;
 
        // Calling garbage collector
        System.gc();
    }
 
    // Method 2
    // overriding finalize() Method
    @Override protected void finalize() throws Throwable
    {
        // Print statement
        System.out.println("Finalize method called");
    }
}

Producción:

Salida Explicación: 

  • Antes de destruir un objeto, Garbage Collector llama al método finalize como máximo una vez en ese objeto. Esto se debe a que el método finalize() se llama dos veces en el ejemplo anterior porque dos objetos son elegibles para la recolección de elementos no utilizados. Esto se debe a que no tenemos ninguna referencia externa a los objetos t1 y t2 después de ejecutar t2=null.
  • Todo lo que tenemos son solo referencias internas (que en la instancia es la variable i de la clase Prueba) entre sí. No hay forma de que podamos llamar a la variable de instancia de ambos objetos. Entonces, ninguno de los objetos puede ser llamado nuevamente hasta t2.i = t1

  • Ambos objetos tienen referencias externas t1 y t2.
  • t1 = nulo: ambos objetos se pueden alcanzar a través de t2.i y t2 respectivamente.
  • t2 = nulo: No hay forma de alcanzar ninguno de los objetos. 
     

Ahora, ambos objetos son elegibles para la recolección de basura ya que no hay forma de que podamos llamarlos . Esto se conoce popularmente como Isla del Aislamiento.

Este artículo es una contribución de Gaurav Miglani . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *