logo

Isla de aislamiento en Java

En Java, la destrucción de objetos está a cargo del recolector de basura El módulo 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 la Isla del Aislamiento 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 hacen referencia entre sí pero que ningún objeto activo en la aplicación hace referencia a ellos. Estrictamente hablando, incluso un único 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:

Isla de aislamiento en Java

Explicación de salida:  

  • Antes de destruir un objeto, Garbage Collector llama al método de finalización 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 basura. 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 el ejemplo es la variable i de la clase Prueba) entre sí. No hay forma de que podamos llamar variables de instancia de ambos objetos. Entonces ninguno de los objetos puede ser llamado nuevamente hasta ' t2.i = t1 '
Isla de aislamiento en Java
  • Ambos objetos tienen referencias externas t1 y t2.
  • t1 = cero :Se puede acceder a ambos objetos 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 como no hay manera de que podamos llamarlos . Esto se conoce popularmente como Isla de Aislamiento.