The
java.lang.ref package defines classes that allow
Java programs to interact with the Java garbage collector. A
Reference represents an indirect reference to an
arbitrary object, known as the
referent.
SoftReference, WeakReference,
and PhantomReference are three concrete subclasses
of Reference that interact with the garbage
collector in different ways, as explained in the individual class
descriptions that follow. ReferenceQueue
represents a linked list of Reference objects. Any
Reference object may have a
ReferenceQueue associated with it. A
Reference object is enqueued
on its ReferenceQueue at some point after the
garbage collector determines that the referent object has become
appropriately unreachable. (The exact level of unreachability depends
on the type of Reference being used.) An
application can monitor a ReferenceQueue to
determine when referent objects enter a new reachability status.
Using the mechanisms defined in this package, you can implement a
cache that grows and shrinks in size according to the amount of
available system memory. Or, you can implement a hashtable that
associates auxiliary information with arbitrary objects, but does not
prevent those objects from being garbage-collected if they are
otherwise unused. The mechanisms provided by this package are
low-level ones, however, and typical applications do not use
java.lang.ref directly. Instead, they rely on
higher-level utilities built on top of the package. See
java.util.WeakHashMap for one example.
In
Java 5.0, the classes in this package have
all been made into generic types. The type variable
T represents the type of the object that
is referred to.