Ilha de Isolamento em Java

Ilha de Isolamento em Java

Em Java, a destruição de objetos é feita pelo coletor de lixo módulo e os objetos que não possuem nenhuma referência a eles são elegíveis para coleta de lixo. O Garbage Collector é capaz de identificar esse tipo de objeto. Agora vamos discutir o que exatamente significa Ilha de Isolamento da seguinte forma:

  • O Objeto 1 faz referência ao Objeto 2 e o Objeto 2 faz referência ao Objeto 1. Nem o Objeto 1 nem o Objeto 2 são referenciados por qualquer outro objeto. Essa é uma ilha de isolamento.
  • Basicamente, uma ilha de isolamento é um grupo de objetos que fazem referência uns aos outros, mas não são referenciados por nenhum objeto ativo na aplicação. Estritamente falando, mesmo um único objeto não referenciado também é uma ilha de isolamento.

Exemplo:

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

Saída:



Ilha de Isolamento em Java

Explicação de saída:  

  • Antes de destruir um objeto, o Garbage Collector chama o método finalize no máximo uma vez naquele objeto. Isso ocorre porque o método finalize() é chamado duas vezes no exemplo acima porque dois objetos são elegíveis para coleta de lixo. Isso ocorre porque não temos nenhuma referência externa aos objetos t1 e t2 após executar t2=null.
  • Tudo o que temos são apenas referências internas (que é a variável de instância i da classe Test) entre si. Não há como chamar a variável de instância de ambos os objetos. Portanto, nenhum dos objetos pode ser chamado novamente até ' t2.i  =  t1 '
Ilha de Isolamento em Java
  • Ambos os objetos possuem referências externas t1 e t2.
  • t1 = zero: Ambos os objetos podem ser alcançados via t2.i e t2 respectivamente. t2 = nulo: Não há como alcançar nenhum dos objetos. 
     

Agora ambos os objetos são elegíveis para coleta de lixo como não há como chamá-los . Isto é popularmente conhecido como Ilha do Isolamento.


Principais Artigos

Categoria

Artigos Interessantes