Class FinalizableReferenceQueue


  • public class FinalizableReferenceQueue
    extends java.lang.Object
    A reference queue with an associated background thread that dequeues references and invokes FinalizableReference.finalizeReferent() on them.

    Keep a strong reference to this object until all of the associated referents have been finalized. If this object is garbage collected earlier, the backing thread will not invoke finalizeReferent() on the remaining references.

    Since:
    2.0 (imported from Google Collections Library)
    • Field Detail

      • logger

        private static final java.util.logging.Logger logger
      • FINALIZER_CLASS_NAME

        private static final java.lang.String FINALIZER_CLASS_NAME
        See Also:
        Constant Field Values
      • startFinalizer

        private static final java.lang.reflect.Method startFinalizer
        Reference to Finalizer.startFinalizer().
      • queue

        final java.lang.ref.ReferenceQueue<java.lang.Object> queue
        The actual reference queue that our background thread will poll.
      • threadStarted

        final boolean threadStarted
        Whether or not the background thread started successfully.
    • Constructor Detail

      • FinalizableReferenceQueue

        public FinalizableReferenceQueue()
        Constructs a new queue.
    • Method Detail

      • cleanUp

        void cleanUp()
        Repeatedly dequeues references from the queue and invokes FinalizableReference.finalizeReferent() on them until the queue is empty. This method is a no-op if the background thread was created successfully.
      • pollReferenceQueue

        private void pollReferenceQueue()
      • loadFinalizer

        private static java.lang.Class<?> loadFinalizer​(FinalizableReferenceQueue.FinalizerLoader... loaders)
        Iterates through the given loaders until it finds one that can load Finalizer.
        Returns:
        Finalizer.class
      • getStartFinalizer

        static java.lang.reflect.Method getStartFinalizer​(java.lang.Class<?> finalizer)
        Looks up Finalizer.startFinalizer().
      • cleanUpAll

        public static void cleanUpAll()