logo

ジャワ島の孤立島

Java では、オブジェクトの破棄は次の方法で処理されます。 ガベージコレクター モジュールと、それらへの参照を持たないオブジェクトは、ガベージ コレクションの対象となります。ガベージ コレクターは、このタイプのオブジェクトを識別できます。それでは、Island of Isolation が正確に何を意味するのかについて、次のように説明しましょう。

  • オブジェクト 1 はオブジェクト 2 を参照し、オブジェクト 2 はオブジェクト 1 を参照します。オブジェクト 1 もオブジェクト 2 も他のオブジェクトから参照されていません。そこは孤立した島だ。
  • 基本的に、分離アイランドとは、相互に参照するが、アプリケーション内のアクティブなオブジェクトによっては参照されないオブジェクトのグループです。厳密に言えば、参照されていない単一のオブジェクトも孤立した島です。

例:



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

出力:

ジャワ島の孤立島

出力の説明:  

  • オブジェクトを破棄する前に、ガベージ コレクターはそのオブジェクトに対して最大 1 回だけ Finalize メソッドを呼び出します。上記の例で、finalize()メソッドが2回呼び出されているのは、ガベージコレクションの対象となるオブジェクトが2つあるためです。これは、t2=null の実行後に t1 および t2 オブジェクトへの外部参照が存在しないためです。
  • 私たちが持っているのは、相互の内部参照 (クラス Test のインスタンス変数 i 内) だけです。両方のオブジェクトのインスタンス変数を呼び出す方法はありません。したがって、オブジェクトは次の時点まで再度呼び出すことができません。 ' t2.i = t1 '
ジャワ島の孤立島
  • どちらのオブジェクトにも外部参照 t1 と t2 があります。
  • t1 = ゼロ :両方のオブジェクトには、それぞれ t2.i と t2 を介してアクセスできます。t2 = ヌル:どのオブジェクトにも到達する方法がありません。 
     

これで、両方のオブジェクトがガベージ コレクションの対象となるようになりました。 彼らを呼ぶ方法はない 。これは一般に次のように知られています 孤立の島。



Javaでソートされた配列リスト