Eiland van isolatie op Java

Eiland van isolatie op Java

In Java wordt objectvernietiging verzorgd door de afvalverzamelaar module en de objecten die geen enkele verwijzing ernaar hebben, komen in aanmerking voor garbagecollection. Garbage Collector is in staat dit type object te identificeren. Laten we nu als volgt bespreken waar het Eiland van Isolatie precies voor staat:

  • Object 1-referenties Object 2- en Object 2-referenties Object 1. Er wordt door geen enkel ander object naar Object 1 of Object 2 verwezen. Dat is een eiland van isolatie.
  • In feite is een isolatie-eiland een groep objecten die naar elkaar verwijzen, maar waarnaar door geen enkel actief object in de toepassing wordt verwezen. Strikt genomen is zelfs een enkel object zonder referentie ook een eiland van isolatie.

Voorbeeld:

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

Uitgang:



Eiland van isolatie op Java

Uitvoer uitleg:  

  • Voordat een object wordt vernietigd, roept Garbage Collector de finalize-methode maximaal één keer aan voor dat object. Dit komt doordat de methode finalize() in het bovenstaande voorbeeld twee keer wordt aangeroepen, omdat twee objecten in aanmerking komen voor garbagecollection. Dit komt omdat we geen externe verwijzingen naar t1- en t2-objecten hebben na het uitvoeren van t2=null.
  • Het enige dat we hebben zijn alleen interne verwijzingen (die bijvoorbeeld variabele i van de klasse Test zijn) naar elkaar. We kunnen op geen enkele manier een instantievariabele van beide objecten noemen. Geen van de objecten kan dus opnieuw worden opgeroepen ' t2.i  =  t1 '
Eiland van isolatie op Java
  • Beide objecten hebben externe referenties t1 en t2.
  • t1 = nul: Beide objecten zijn respectievelijk via t2.i en t2 te bereiken. t2 = nul: Geen mogelijkheid om de objecten te bereiken. 
     

Nu komen beide objecten in aanmerking voor garbagecollection als we kunnen ze op geen enkele manier bellen . Dit staat in de volksmond bekend als Eiland van isolatie.


Top Artikelen

Categorie

Interessante Artikelen