Class PhantomReference<T>

java.lang.Object
java.lang.ref.Reference<T>
java.lang.ref.PhantomReference<T>
Type Parameters:
T - the type of the referent

public non-sealed classPhantomReference<T>extendsReference<T>
Phantom reference objects, which are enqueued after the collectordetermines that their referents may otherwise be reclaimed. Phantomreferences are most often used to schedule post-mortem cleanup actions.

Suppose the garbage collector determines at a certain point in timethat an object isphantom reachable. At that time it will atomically clearall phantom references to that object and all phantom references toany other phantom-reachable objects from which that object is reachable.At the same time or at some later time it will enqueue those newly-clearedphantom references that are registered with reference queues.

In order to ensure that a reclaimable object remains so, the referent ofa phantom reference may not be retrieved: Theget method of aphantom reference always returnsnull.TherefersTo method can be used to testwhether some object is the referent of a phantom reference.

Since:
1.2
  • Constructor Details

    • PhantomReference

      public PhantomReference(T referent,ReferenceQueue<? superT> q)
      Creates a new phantom reference that refers to the given object andis registered with the given queue.

      It is possible to create a phantom reference with anullqueue. Such a reference will never be enqueued.

      Parameters:
      referent - the object the new phantom reference will refer to
      q - the queue with which the reference is to be registered, ornull if registration is not required
  • Method Details

    • get

      public T get()
      Returns this reference object's referent. Because the referent of aphantom reference is always inaccessible, this method always returnsnull.
      Overrides:
      get in class Reference<T>
      Returns:
      null
      See Also: