Package org.h2.util

# Class CloseWatcher

java.lang.Object
java.lang.ref.Reference<T>
java.lang.ref.PhantomReference<Object>
org.h2.util.CloseWatcher

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

## Constructor Summary

Constructors
Constructor
Description
`CloseWatcher(Object referent, ReferenceQueue<Object> q, AutoCloseable closeable)`

## Method Summary

Modifier and Type
Method
Description
`AutoCloseable`
`getCloseable()`
`String`
`getOpenStackTrace()`
Get the open stack trace or null if none.
`static CloseWatcher`
`pollUnclosed()`
Check for an collected object.
`static CloseWatcher`
`register(Object o, AutoCloseable closeable, boolean stackTrace)`
Register an object.
`static void`
`unregister(CloseWatcher w)`
Unregister an object, so it is no longer tracked.

### Methods inherited from class java.lang.ref.PhantomReference

`get`

### Methods inherited from class java.lang.ref.Reference

`clear, clone, enqueue, isEnqueued, reachabilityFence, refersTo`

### Methods inherited from class java.lang.Object

`equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### CloseWatcher

public CloseWatcher(Object referent, ReferenceQueue<Object> q, AutoCloseable closeable)

## 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()