java.lang.Object | |
↳ | java.lang.ref.Reference<T> |
Known Direct Subclasses
|
Known Indirect Subclasses |
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 |
|
Softly reachable |
|
Weakly reachable |
|
Phantom-reachable |
|
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Makes the referent
null
.
|
||||||||||
|
Forces the reference object to be enqueued if it has been associated with
a queue.
|
||||||||||
|
Returns the referent of the reference object.
|
||||||||||
|
Checks whether the reference object has been enqueued.
|
[Expand]
Inherited Methods
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
Makes the referent
null
. This does not force the reference
object to be enqueued.
Forces the reference object to be enqueued if it has been associated with a queue.
true
if this call has caused the
Reference
to
become enqueued, or
false
otherwise
Returns the referent of the reference object.
null
if the
object has been cleared.
Checks whether the reference object has been enqueued.
true
if the
Reference
has been enqueued,
false
otherwise