ジャワ島の孤立島

ジャワ島の孤立島

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 = ヌル: どのオブジェクトにも到達する方法がありません。 
     

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


トップ記事

カテゴリ

興味深い記事