CDC 1.1.2

java.lang.ref
クラス SoftReference

java.lang.Object
  上位を拡張 java.lang.ref.Reference
      上位を拡張 java.lang.ref.SoftReference

public class SoftReference
extends Reference

メモリー要求に応じてガベージコレクタの判断でクリアされるソフト参照オブジェクトです。ソフト参照は通常、メモリーセンシティブなキャッシュを実装するために使用されます。

ある時点で、オブジェクトが「ソフト到達可能」であると、ガベージコレクタが判断したとします。その時点で、ガベージコレクタは、そのオブジェクトへのソフト参照すべてと、強参照のチェーンを経由してそのオブジェクトに到達できるような、ソフト到達可能なほかのオブジェクトへのソフト参照すべてを原子的にクリアすることを選択できます。同時にまたはあとで、ガベージコレクタは、参照キューに登録されているそれらの新しくクリアされたソフト参照をキューに入れます。

ソフト到達可能なオブジェクトへのすべてのソフト参照は、仮想マシンが OutOfMemoryError をスローする前にクリアされていることが保証されています。そうでない場合、ソフト参照がクリアされる時点、またはさまざまなオブジェクトへの一連のソフト参照がクリアされる順序に制約はありません。ただし、仮想マシンの実装は、最近作成されたソフト参照または最近使用されたソフト参照をクリアしないことが奨励されます。

このクラスの直接のインスタンスは、単純なキャッシュを実装するために使用できます。このクラスまたは派生したサブクラスは、より洗練されたキャッシュを実装するために、もっと大きなデータ構造でも使用できます。ソフト参照のリファレントが強到達可能であるかぎり、つまり実際に使用されているかぎり、ソフト参照はクリアされません。このため、たとえば洗練されたキャッシュは、エントリへの強いリファレントを維持することで、もっとも新しく使用されたエントリが破棄されることを防ぎ、ほかのエントリはガベージコレクタの判断で破棄されるようにできます。

導入されたバージョン:
1.2

コンストラクタの概要
SoftReference(Object referent)
          指定されたオブジェクトを参照する新しいソフト参照を作成します。
SoftReference(Object referent, ReferenceQueue q)
          指定されたオブジェクトを参照し、指定されたキューに登録されている新しいソフト参照を作成します。
 
メソッドの概要
 Object get()
          参照オブジェクトのリファレントを返します。
 
クラス java.lang.ref.Reference から継承されたメソッド
clear, enqueue, isEnqueued
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

SoftReference

public SoftReference(Object referent)
指定されたオブジェクトを参照する新しいソフト参照を作成します。新しい参照は、どのキューにも登録されません。

パラメータ:
referent - 新しいソフト参照が参照するオブジェクト

SoftReference

public SoftReference(Object referent,
                     ReferenceQueue q)
指定されたオブジェクトを参照し、指定されたキューに登録されている新しいソフト参照を作成します。

パラメータ:
referent - 新しいソフト参照が参照するオブジェクト
q - ソフト参照が登録されるキュー
例外:
NullPointerException - queue 引数が null の場合
メソッドの詳細

get

public Object get()
参照オブジェクトのリファレントを返します。プログラムまたはガベージコレクタによって、この参照オブジェクトがすでにクリアされている場合、このメソッドは null を返します。

オーバーライド:
クラス Reference 内の get
戻り値:
この参照が表すオブジェクト。 この参照オブジェクトがクリアされている場合は null

CDC 1.1.2

Copyright 2006 Sun Microsystems, Inc. All Rights Reserved. Use of this specification is subject to license terms.