Javaの島問題

WBOY
リリース: 2023-08-19 20:17:06
転載
1226 人が閲覧しました

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 までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート