public class

WeakReference

extends Reference<T>
java.lang.Object
   ↳ java.lang.ref.Reference<T>
     ↳ java.lang.ref.WeakReference<T>
Known Direct Subclasses

Class Overview

Implements a weak reference, which is the middle of the three types of references. Once the garbage collector decides that an object obj is is weakly-reachable, the following happens:

  • A set ref of references is determined. ref contains the following elements:
    • All weak references pointing to obj.
    • All weak references pointing to objects from which obj is either strongly or softly reachable.
  • All references in ref are atomically cleared.
  • All objects formerly being referenced by ref become eligible for finalization.
  • At some future point, all references in ref will be enqueued with their corresponding reference queues, if any.
Weak references are useful for mappings that should have their entries removed automatically once they are not referenced any more (from outside). 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:
  • A SoftReference should be cleared and enqueued as late as possible, that is, in case the VM is in danger of running out of memory.
  • A WeakReference may be cleared and enqueued as soon as is known to be weakly-referenced.

Summary

Public Constructors
WeakReference(T r)
Constructs a new weak reference to the given referent.
WeakReference(T r, ReferenceQueue<? super T> q)
Constructs a new weak reference to the given referent.
[Expand]
Inherited Methods
From class java.lang.ref.Reference
From class java.lang.Object

Public Constructors

public WeakReference (T r)

Since: API Level 1

Constructs a new weak reference to the given referent. The newly created reference is not registered with any reference queue.

Parameters
r the referent to track

public WeakReference (T r, ReferenceQueue<? super T> q)

Since: API Level 1

Constructs a new weak reference to the given referent. The newly created reference is registered with the given reference queue.

Parameters
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.