java.lang.Object | ||
↳ | java.lang.ref.Reference<T> | |
↳ | java.lang.ref.SoftReference<T> |
Implements a soft reference, which is the least-weak of the three types of
references. Once the garbage collector has decided that an object obj
is softly-reachable, the following
may happen, either immediately or at a later point:
ref
of references is determined. ref
contains the
following elements:
obj
.
obj
is
strongly reachable.
ref
are atomically cleared.
ref
will be enqueued with their corresponding reference queues, if any.
SoftReference
s pointing to softly reachable objects are
guaranteed to be cleared before the VM will throw an OutOfMemoryError
.
Soft references are useful for caches that should automatically have
their entries removed once they are not referenced any more (from outside),
and there is a need for memory. The difference between a SoftReference
and a WeakReference
is the point of time at which the
decision is made to clear and enqueue the reference:
SoftReference
should be cleared and enqueued as late as
possible, that is, in case the VM is in danger of running out of
memory.
WeakReference
may be cleared and enqueued as soon as is
known to be weakly-referenced.
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a new soft reference to the given referent.
| |||||||||||
Constructs a new soft reference to the given referent.
|
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.ref.Reference
| |||||||||||
From class
java.lang.Object
|
Constructs a new soft reference to the given referent. The newly created reference is not registered with any reference queue.
r | the referent to track |
---|
Constructs a new soft reference to the given referent. The newly created reference is registered with the given reference queue.
r | the referent to track |
---|---|
q | the queue to register to the reference object with. A null value results in a weak reference that is not associated with any queue. |