logo

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

В 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 = нула:Няма начин да се стигне до някой от обектите. 
     

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



параметри по подразбиране на java