Java プラットフォーム 1.2

java.lang.ref
クラス SoftReference

java.lang.Object
  |
  +--java.lang.ref.Reference
        |
        +--java.lang.ref.SoftReference

public class SoftReference
extends Reference

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

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

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

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

導入されたバージョン:
JDK1.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)
指定されたオブジェクトを参照する新しいソフト参照を作成します。新しい参照は、どのキューにも登録されていません。

SoftReference

public SoftReference(Object referent,
                     ReferenceQueue q)
指定されたオブジェクトを参照し、指定されたキューに登録されている新しいソフト参照を作成します。
例外:
NullPointerException - queue 引数が null の場合
メソッドの詳細

get

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

Java プラットフォーム 1.2

バグや機能要求の報告
新しい javadoc の表示についてのコメントやご提案
Java は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-1998 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.