Jump to content

Phantom reference

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Veganfood (talk | contribs) at 23:27, 6 August 2016 (Update a reference and changes in the upcoming Java 9). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

A phantom reference is one of the strengths or levels of 'non strong' reference defined in the Java programming language; the others being weak and soft.[1] Phantom reference are the weakest level of reference in Java; in order from strongest to weakest, they are: strong, soft, weak, phantom.

An object is phantomly referenced after it has been finalized.

In Java 8 and earlier versions, the reference needs to be cleared before the memory for a finalized referent can be reclaimed. A change in Java 9[2] will allow memory from a finalized referent to be reclaimable immediately.

Use

Phantom references are of limited use, primarily narrow technical uses.[3] First, it can be used instead of a finalize method, guaranteeing that the object is not resurrected during finalization. This allows the object to be garbage collected in a single cycle, rather than needing to wait for a second GC cycle to ensure that it has not been resurrected. A second use is to detect exactly when an object has been removed from memory (by using in combination with a ReferenceQueue object), ensuring that its memory is available, for example deferring allocation of a large amount of memory (e.g., a large image) until previous memory is freed.

See also

References

  1. ^ "java.lang.ref (Java Platform SE 8 )". Java™ Platform, Standard Edition 8 API Specification. Oracle. Retrieved 6 August 2016.
  2. ^ oracle.com, kim barrett at (28 December 2015). "hg: jdk9/hs-rt/jdk: 8071507: (ref) Clear phantom reference as soft and weak references do".
  3. ^ Nicholas, Ethan (May 4, 2006). "Understanding Weak References". java.net. Retrieved October 1, 2010. {{cite web}}: External link in |publisher= (help)