3

Java には、Strong、Soft、Weak、および Phantom の 4 種類の参照があります。Javaがファントム参照を正確に使用する場所と方法を詳しく説明してください。

編集 :

assyliasが以下に投稿したように、私はjavaDocを読みました。このセクションでは、オブジェクトがファイナライズされていて、何らかのファントム参照がそれを参照している場合、そのオブジェクトはファントム リチャブルであると述べています。私はその声明をまったく理解していません。

ファントムの用途は何ですか?どのような場合に使用しますか?

4

1 に答える 1

12

各タイプの参照がどのように機能するかは、java.lang.refパッケージ javadocで説明されています。

最も強いものから最も弱いものまで、さまざまなレベルの到達可能性がオブジェクトのライフサイクルを反映しています。それらは操作上、次のように定義されます。

  • 参照オブジェクトをトラバースせずに何らかのスレッドが到達できる場合、そのオブジェクトは強力に到達可能です。新しく作成されたオブジェクトは、それを作成したスレッドから強力に到達可能です。
  • 強く到達可能ではないが、ソフト参照をトラバースすることで到達できるオブジェクトは、ソフト到達可能です。
  • 強くも弱くも到達可能ではないが、弱い参照をたどることによって到達できる場合、そのオブジェクトは弱く到達可能です。弱い到達可能オブジェクトへの弱い参照がクリアされると、オブジェクトはファイナライズの対象になります。
  • オブジェクトが強く、柔軟に、または弱く到達可能でなく、ファイナライズされており、いくつかのファントム参照がそれを参照している場合、そのオブジェクトはファントム到達可能です。
  • 最後に、上記のいずれかの方法でオブジェクトに到達できない場合、オブジェクトは到達不能であり、したがって再利用の対象となります。

Stack OVERflow には、いつ、どのように が必要になるかの例を示す投稿がいくつかありますPhantomReference

于 2012-10-01T11:59:57.217 に答える