Class AbstractNativeReference
- All Implemented Interfaces:
AutoCloseable
- Direct Known Subclasses:
AbstractImmutableNativeReference,RocksMutableObject
rocksdb object.
AbstractNativeReference has the close()
method, which frees its associated C++ object.
This function should be called manually, or even better, called implicitly using a
try-with-resources
statement, when you are finished with the object. It is no longer
called automatically during the regular Java GC process via finalization
Object.finalize().
Explanatory note - When or if the Garbage Collector calls Object.finalize()
depends on the JVM implementation and system conditions, which the programmer
cannot control. In addition, the GC cannot see through the native reference
long member variable (which is the C++ pointer value to the native object),
and cannot know what other resources depend on it.
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionabstract voidclose()Frees the underlying C++ objectprotected abstract booleanReturns true if we are responsible for freeing the underlying C++ object
-
Constructor Details
-
AbstractNativeReference
public AbstractNativeReference()
-
-
Method Details
-
isOwningHandle
protected abstract boolean isOwningHandle()Returns true if we are responsible for freeing the underlying C++ object- Returns:
- true if we are responsible to free the C++ object
-
close
public abstract void close()Frees the underlying C++ objectIt is strong recommended that the developer calls this after they have finished using the object.
Note, that once an instance of
AbstractNativeReferencehas been closed, calling any of its functions will lead to undefined behavior.- Specified by:
closein interfaceAutoCloseable
-