モジュール java.base
パッケージ java.lang.ref

クラスPhantomReference<T>


  • public class PhantomReference<T>
    extends Reference<T>
    ファントム参照オブジェクトです。ファントム参照オブジェクトがキューに入れられるのは、キューに入れておかないとそれらのリファレントが再生される可能性があるとコレクタが判断したときです。 幻の参照は、死後のクリーンアップ・アクションをスケジュールするために最も頻繁に使用されます。

    ある時点でオブジェクトが「ファントム到達可能」であるとガベージ・コレクタが判断したとします。 その時点で、そのオブジェクトへのすべてのファントム参照と、そのオブジェクトに到達可能な他のファントム到達可能オブジェクトへのすべてのファントム参照を原子的にクリアします。 同時に、または後で、参照キューに登録されたそれらの新たにクリアされたファントム参照をエンキューします。

    再生可能なオブジェクトをそのままにしておくために、ファントム参照のリファレントを取り出すことはできません。ファントム参照のgetメソッドは、常にnullを返します。

    導入されたバージョン:
    1.2
    • コンストラクタの詳細

      • PhantomReference

        public PhantomReference​(T referent,
                                ReferenceQueue<? super T> q)
        指定されたオブジェクトを参照し、指定されたキューに登録されている新しいファントム参照を作成します。

        nullキューでファントム・リファレンスを作成することは可能ですが、そのようなリファレンスはまったく役に立たない: そのgetメソッドは常にnullを返し、キューを持たないのでエンキューされません。

        パラメータ:
        referent - 新しいファントム参照が参照するオブジェクト
        q - 参照が登録されるキュー。登録が必要ない場合はnull
    • メソッドの詳細

      • get

        public T get()
        参照オブジェクトのリファレントを返します。 ファントム参照のリファレントは常にアクセス不可能なため、このメソッドは常にnullを返します。
        Overrides:
        get、クラス: Reference<T>
        戻り値:
        null