Package org.h2.util

Class CloseWatcher


public class CloseWatcher extends PhantomReference<Object>
A phantom reference to watch for unclosed objects.
  • Field Details

    • queue

      private static final ReferenceQueue<Object> queue
      The queue (might be set to null at any time).
    • refs

      private static final Set<CloseWatcher> refs
      The reference set. Must keep it, otherwise the references are garbage collected first and thus never enqueued.
    • openStackTrace

      private String openStackTrace
      The stack trace of when the object was created. It is converted to a string early on to avoid classloader problems (a classloader can't be garbage collected if there is a static reference to one of its classes).
    • closeable

      private AutoCloseable closeable
      The closeable object.
  • Constructor Details

  • Method Details

    • pollUnclosed

      public static CloseWatcher pollUnclosed()
      Check for an collected object.
      Returns:
      the first watcher
    • register

      public static CloseWatcher register(Object o, AutoCloseable closeable, boolean stackTrace)
      Register an object. Before calling this method, pollUnclosed() should be called in a loop to remove old references.
      Parameters:
      o - the object
      closeable - the object to close
      stackTrace - whether the stack trace should be registered (this is relatively slow)
      Returns:
      the close watcher
    • unregister

      public static void unregister(CloseWatcher w)
      Unregister an object, so it is no longer tracked.
      Parameters:
      w - the reference
    • getOpenStackTrace

      public String getOpenStackTrace()
      Get the open stack trace or null if none.
      Returns:
      the open stack trace
    • getCloseable

      public AutoCloseable getCloseable()