Остров на изолацията в Ява

Остров на изолацията в Ява

В Java разрушаването на обекти се поема от събирач на боклук модул и обектите, които нямат препратки към тях, са подходящи за събиране на боклук. Garbage Collector може да идентифицира този тип обект. Сега нека обсъдим какво точно означава островът на изолацията, както следва:

  • Обект 1 препраща към Обект 2, а Обект 2 препраща към Обект 1. Нито Обект 1, нито Обект 2 се препращат от друг обект. Това е остров на изолацията.
  • По принцип островът на изолация е група от обекти, които се препращат един към друг, но не са препращани от нито един активен обект в приложението. Строго погледнато, дори единичен нерефериран обект също е остров на изолация.

Пример:

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'  );      }   }   

Изход:

Остров на изолацията в Ява

Обяснение на изхода:  

  • Преди да унищожи обект, Garbage Collector извиква метод finalize най-много веднъж на този обект. Причината е, че методът finalize() се извиква два пъти в горния пример, защото два обекта отговарят на условията за събиране на боклук. Това е така, защото нямаме външни препратки към t1 и t2 обекти след изпълнение на t2=null.
  • Всичко, което имаме, са само вътрешни препратки (което е в променливата i на класа Test) към тях един към друг. Няма начин да извикаме променлива на екземпляр на двата обекта. Така че никой от обектите не може да бъде извикан отново до ' t2.i  =  t1 '
Остров на изолацията в Ява
  • И двата обекта имат външни препратки t1 и t2.
  • t1 = нула: И двата обекта могат да бъдат достигнати съответно чрез t2.i и t2. t2 = нула: Няма начин да се стигне до някой от обектите. 
     

Сега и двата обекта отговарят на условията за събиране на боклук като няма как да им се обадим . Това е популярно известно като Остров на изолацията.