Az elszigeteltség szigete Jáván

Az elszigeteltség szigete Jáván

Java-ban az objektummegsemmisítésről a szemétgyűjtő modul és a rájuk hivatkozással nem rendelkező objektumok jogosultak a szemétgyűjtésre. A Garbage Collector képes azonosítani az ilyen típusú objektumokat. Most pedig beszéljük meg, mit is jelent pontosan az Elszigetelődés szigete a következők szerint:

  • Az 1. objektum a 2. objektumra és a 2. objektum hivatkozik az 1. objektumra. Sem az 1., sem a 2. objektumra nem hivatkozik semmilyen más objektum. Ez az elszigeteltség szigete.
  • Alapvetően az izolációs sziget olyan objektumok csoportja, amelyek hivatkoznak egymásra, de az alkalmazásban egyetlen aktív objektum sem hivatkozik rájuk. Szigorúan véve még egyetlen hivatkozás nélküli objektum is az elszigeteltség szigete.

Példa:

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

Kimenet:

Az elszigeteltség szigete Jáván

Kimenet magyarázata:  

  • Egy objektum megsemmisítése előtt a Garbage Collector legfeljebb egyszer hívja meg a véglegesítési metódust az adott objektumon. Ez azért van, mert a fenti példában a finalize() metódust kétszer hívják meg, mert két objektum jogosult a szemétgyűjtésre. Ennek az az oka, hogy a t2=null végrehajtása után nincs külső hivatkozásunk a t1 és t2 objektumokra.
  • Csak belső hivatkozásaink vannak (amely például a Test osztály i változója) egymásra. Semmiképpen sem hívhatjuk meg mindkét objektum példányváltozóját. Tehát egyik objektum sem hívható újra addig ' t2.i  =  t1 '
Az elszigeteltség szigete Jáván
  • Mindkét objektumnak van külső referenciája t1 és t2.
  • t1 = nulla: Mindkét objektum elérhető a t2.i, illetve a t2-n keresztül. t2 = null: Semmilyen tárgyat nem lehet elérni. 
     

Most mindkét objektum jogosult a szemétszállításra semmiképpen sem hívhatjuk őket . Ezt közismerten Az elszigeteltség szigete.