Known Direct Subclasses
PhantomReference<T> |
Implements a phantom reference, which is the weakest of the three types of
references. |
SoftReference<T> |
A reference that is cleared when its referent is not strongly reachable and
there is memory pressure. |
WeakReference<T> |
Implements a weak reference, which is the middle of the three types of
references. |
|
Known Indirect Subclasses
|
Class Overview
Provides an abstract class which describes behavior common to all reference
objects. It is not possible to create immediate subclasses of
Reference
in addition to the ones provided by this package. It is
also not desirable to do so, since references require very close cooperation
with the system's garbage collector. The existing, specialized reference
classes should be used instead.
Three different type of references exist, each being weaker than the preceding one:
SoftReference
, WeakReference
, and
PhantomReference
. "Weakness" here means that less restrictions are
being imposed on the garbage collector as to when it is allowed to
actually garbage-collect the referenced object.
In order to use reference objects properly it is important to understand
the different types of reachability that trigger their clearing and
enqueueing. The following table lists these, from strongest to weakest.
For each row, an object is said to have the reachability on the left side
if (and only if) it fulfills all of the requirements on the right side. In
all rows, consider the root set to be a set of references that
are "resistant" to garbage collection (that is, running threads, method
parameters, local variables, static fields and the like).
Strongly reachable |
- There exists at least one path from the root set to the object that does not traverse any
instance of a
java.lang.ref.Reference subclass.
|
Softly reachable |
- The object is not strongly reachable.
- There exists at least one path from the root set to the object that does traverse
a
java.lang.ref.SoftReference instance, but no java.lang.ref.WeakReference
or java.lang.ref.PhantomReference instances.
|
Weakly reachable |
- The object is neither strongly nor softly reachable.
- There exists at least one path from the root set to the object that does traverse a
java.lang.ref.WeakReference instance, but no java.lang.ref.PhantomReference
instances.
|
Phantom-reachable |
- The object is neither strongly, softly, nor weakly reachable.
- The object is referenced by a
java.lang.ref.PhantomReference instance.
- The object has already been finalized.
|
Summary
Public Methods |
void
|
clear()
Makes the referent null .
|
boolean
|
enqueue()
Forces the reference object to be enqueued if it has been associated with
a queue.
|
T
|
get()
Returns the referent of the reference object.
|
boolean
|
isEnqueued()
Checks whether the reference object has been enqueued.
|
[Expand]
Inherited Methods |
From class
java.lang.Object
Object
|
clone()
Creates and returns a copy of this Object .
|
boolean
|
equals(Object o)
Compares this instance with the specified object and indicates if they
are equal.
|
void
|
finalize()
Invoked when the garbage collector has detected that this instance is no longer reachable.
|
final
Class<?>
|
getClass()
Returns the unique instance of Class that represents this
object's class.
|
int
|
hashCode()
Returns an integer hash code for this object.
|
final
void
|
notify()
Causes a thread which is waiting on this object's monitor (by means of
calling one of the wait() methods) to be woken up.
|
final
void
|
notifyAll()
Causes all threads which are waiting on this object's monitor (by means
of calling one of the wait() methods) to be woken up.
|
String
|
toString()
Returns a string containing a concise, human-readable description of this
object.
|
final
void
|
wait()
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object.
|
final
void
|
wait(long millis, int nanos)
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object or until the
specified timeout expires.
|
final
void
|
wait(long millis)
Causes the calling thread to wait until another thread calls the notify() or notifyAll() method of this object or until the
specified timeout expires.
|
|
Public Methods
public
void
clear
()
Makes the referent null
. This does not force the reference
object to be enqueued.
public
boolean
enqueue
()
Forces the reference object to be enqueued if it has been associated with
a queue.
Returns
true
if this call has caused the Reference
to
become enqueued, or false
otherwise
public
T
get
()
Returns the referent of the reference object.
Returns
- the referent to which reference refers, or
null
if the
object has been cleared.
public
boolean
isEnqueued
()
Checks whether the reference object has been enqueued.
Returns
true
if the Reference
has been enqueued, false
otherwise