JavaTM 2 Platform
Std. Ed. v1.3

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 の実装は、最近作成されたソフト参照または最近使用されたソフト参照をクリアしないことが奨励されます。

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

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

SoftReference

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

get

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

JavaTM 2 Platform
Std. Ed. v1.3

バグや機能要求の報告
さらに詳しい API リファレンスおよび開発者ドキュメントについては、 Java 2 SDK SE Developer Documentation を参照してください。このドキュメントには、概念、用語の定義、回避策、 実用的なコード例など、開発者を対象にした詳細な解説が掲載されています。

Java、Java 2D、JDBC は、米国およびその他の国における米国 Sun Microsystems, Inc. の商標もしくは登録商標です。
Copyright 1993-2000 Sun Microsystems, Inc. 901 San Antonio Road,
Palo Alto, California, 94303, U.S.A. All Rights Reserved.