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 があります。
これで、両方のオブジェクトがガベージ コレクションの対象となるようになりました。 彼らを呼ぶ方法はない 。これは一般に次のように知られています 孤立の島。
Javaでソートされた配列リスト