オブジェクトが使用された後、そのオブジェクトはガベージ コレクター クラスを使用してメモリから割り当て解除されます。オブジェクトは、そのオブジェクトへの参照が存在しないという事実に基づいて破棄されます。コレクター クラスは、破棄する必要があるオブジェクトに対して 'finalize' 関数を呼び出します。
孤立島とは何ですか?
2 つのオブジェクト 'a' と ' b' は相互に参照しており、他のオブジェクトからは参照されていません。これは孤立島として知られています。
これは、相互に参照しているが参照されていないオブジェクトのグループです。
Note - 単一の参照されていないオブジェクトも孤立した島です。
例を見てみましょう -
Live Demo
public class Demo{ Demo i; public static void main(String[] args){ Demo my_ob_1 = new Demo(); System.out.println("Demo object one has been created"); Demo my_ob_2 = new Demo(); System.out.println("Demo object two has been created"); my_ob_1.i = my_ob_2; my_ob_2.i = my_ob_1; my_ob_1 = null; my_ob_2 = null; System.gc(); } @Override protected void finalize() throws Throwable{ System.out.println("The finalize method has been called on the object"); } }
Demo object one has been created Demo object two has been created The finalize method has been called on the object The finalize method has been called on the object
Demo という名前のクラスには main 関数が含まれています。ここでは、Demo クラス型の変数が作成されます。 Demo クラスのインスタンスが作成され、2 番目のオブジェクトが最初のオブジェクトの Demo オブジェクトに割り当てられます。 2 番目のオブジェクトについても同様です。ここで、両方のオブジェクトに null が割り当てられ、「System.gc」関数が呼び出されます。これで、「finalize」関数がオーバーライドされました。
以上がJavaの島問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。