Javaの島問題

WBOY
WBOY転載
2023-08-19 20:17:061259ブラウズ

Javaの島問題

オブジェクトが使用された後、そのオブジェクトはガベージ コレクター クラスを使用してメモリから割り当て解除されます。オブジェクトは、そのオブジェクトへの参照が存在しないという事実に基づいて破棄されます。コレクター クラスは、破棄する必要があるオブジェクトに対して 'finalize' 関数を呼び出します。

孤立島とは何ですか?

2 つのオブジェクト 'a' と ' b' は相互に参照しており、他のオブジェクトからは参照されていません。これは孤立島として知られています。

これは、相互に参照しているが参照されていないオブジェクトのグループです。

Note - 単一の参照されていないオブジェクトも孤立した島です。

例を見てみましょう -

Example

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

Output

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 サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。