クラス | 説明 |
---|---|
PhantomReference<T> |
ファントム参照オブジェクトです。ファントム参照オブジェクトがキューに入れられるのは、キューに入れておかないとそれらのリファレントが再生される可能性があるとコレクタが判断したときです。
|
Reference<T> |
参照オブジェクトための抽象基底クラスです。
|
ReferenceQueue<T> |
参照キューです。到達可能性が適切に変更されたことが検出されると、登録されている参照オブジェクトはガベージ・コレクタによって参照キューに追加されます。
|
SoftReference<T> |
メモリー要求に応じてガベージ・コレクタの判断でクリアされるソフト参照オブジェクトです。
|
WeakReference<T> |
弱参照オブジェクトです。弱参照オブジェクトは、その弱参照オブジェクトのリファレントがファイナライズ可能になり、ファイナライズされ、そして再生されることを阻止することはありません。
|
各型の参照オブジェクトは、抽象基底
クラスのサブクラスによって実装されます。それらのサブクラスのインスタンスは、リファレントと呼ばれる、特定のオブジェクトへの参照をカプセル化します。各参照オブジェクトは、参照を取得およびクリアするためのメソッドを提供します。クリア処理は提供されますが、参照オブジェクトは不変であるため、Reference
set
オペレーションは提供されません。プログラムは、これらのサブクラスをさらにサブクラス化して目的にあったフィールドおよびメソッドを追加することも、これらのサブクラスを変更しないでそのまま使うこともできます。
ReferenceQueue
クラスによって実装されます。
登録された参照オブジェクトとそのキューの関係は一方向です。つまり、キューは登録されている参照の履歴を記録しません。登録されている参照自体が到達不可能になると、それは絶対にキューに入れられません。参照オブジェクトを使用してプログラムがリファレントを必要とするかぎりオブジェクトを到達可能にしておくことはプログラムの責任です。
プログラムによっては、あるスレッドを、1つ以上のキューからの参照オブジェクトの削除およびそれらの処理専用にするように選択されますが、これは、まったく必要ありません。多くの場合にうまく機能する方法は、かなり頻繁に行われるほかのアクションを実行する間に参照キューを検査することです。たとえば、弱キーを実装するために弱参照を使用するハッシュ表の場合は、表がアクセスされるたびに自分の参照キューに対してポーリングします。
クラスはこの方法で機能します。WeakHashMap
メソッドは単に内部データ構造をチェックするだけなので、このチェックがハッシュ表アクセス・メソッドに与えるオーバーヘッドはごくわずかです。
ReferenceQueue.poll
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.