Skip to content

Most visited

Recently visited

navigation
Added in API level 1

Reference

public abstract class Reference
extends Object

java.lang.Object
   ↳ java.lang.ref.Reference<T>
Known Direct 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
  • 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.

Inherited methods

From class java.lang.Object

Public methods

clear

Added in API level 1
void clear ()

Makes the referent null. This does not force the reference object to be enqueued.

enqueue

Added in API level 1
boolean enqueue ()

Forces the reference object to be enqueued if it has been associated with a queue.

Returns
boolean true if this call has caused the Reference to become enqueued, or false otherwise

get

Added in API level 1
T get ()

Returns the referent of the reference object.

Returns
T the referent to which reference refers, or null if the object has been cleared.

isEnqueued

Added in API level 1
boolean isEnqueued ()

Checks whether the reference object has been enqueued.

Returns
boolean true if the Reference has been enqueued, false otherwise
This site uses cookies to store your preferences for site-specific language and display options.

Hooray!

This class requires API level or higher

This doc is hidden because your selected API level for the documentation is . You can change the documentation API level with the selector above the left navigation.

For more information about specifying the API level your app requires, read Supporting Different Platform Versions.