logo

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:

tabela hash versus mapa hash
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.



Kat timp