Eristyksen saari Javalla

Eristyksen saari Javalla

Javassa objektien tuhoamisesta huolehtii roskien kerääjä moduuli ja objektit, joilla ei ole viittauksia niihin, ovat oikeutettuja roskakoriin. Garbage Collector pystyy tunnistamaan tämän tyyppiset esineet. Keskustelkaamme nyt siitä, mitä eristyksen saari tarkalleen tarkoittaa seuraavasti:

  • Objekti 1 viittaa objektiin 2 ja objekti 2 viittaa objektiin 1. Mikään muu objekti ei viittaa objektiin 1 tai objektiin 2. Se on eristyneisyyden saari.
  • Pohjimmiltaan eristyssaareke on joukko objekteja, jotka viittaavat toisiinsa, mutta joihin ei viitata mikään sovelluksen aktiivinen objekti. Tarkkaan ottaen jopa yksittäinen viittaamaton kohde on myös eristyneisyyden saari.

Esimerkki:

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

Lähtö:



Eristyksen saari Javalla

Lähtöselitys:  

  • Ennen objektin tuhoamista Garbage Collector kutsuu viimeistelymenetelmän enintään kerran kyseiselle objektille. Se johtuu siitä, että finalize()-menetelmää kutsutaan kaksi kertaa yllä olevassa esimerkissä, koska kaksi objektia ovat kelvollisia roskien keräämiseen. Tämä johtuu siitä, että meillä ei ole ulkoisia viittauksia t1- ja t2-objekteihin, kun t2=null on suoritettu.
  • Meillä on vain sisäisiä viittauksia (joka on esimerkiksi luokan Test muuttuja i) niihin toisiinsa. Emme voi millään tavalla kutsua molempien objektien ilmentymämuuttujia. Joten mitään objekteja ei voida kutsua uudelleen ennen kuin ' t2.i = t1 '
Eristyksen saari Javalla
  • Molemmilla objekteilla on ulkoiset viitteet t1 ja t2.
  • t1 = nolla: Molemmat kohteet voidaan saavuttaa t2.i:n ja t2:n kautta. t2 = nolla: Ei mitään keinoa päästä käsiksi esineisiin. 
     

Nyt molemmat kohteet ovat oikeutettuja roskakoriin emme voi kutsua heitä millään tavalla . Tämä tunnetaan yleisesti nimellä Eristyksen saari.


Top Artikkelit

Luokka

Mielenkiintoisia Artikkeleita