public abstract class AbstractImmutableNativeReference extends AbstractNativeReference
AbstractNativeReference
which have an immutable reference to the
underlying native C++ objectModifier | Constructor and Description |
---|---|
protected |
AbstractImmutableNativeReference(boolean owningHandle) |
Modifier and Type | Method and Description |
---|---|
void |
close()
Frees the underlying C++ object
|
protected void |
disOwnNativeHandle()
Releases this
AbstractNativeReference from the responsibility of
freeing the underlying native C++ object |
protected abstract void |
disposeInternal()
The helper function of
AbstractNativeReference.dispose()
which all subclasses of AbstractImmutableNativeReference must
implement to release their underlying native C++ objects. |
boolean |
isOwningHandle()
Returns true if we are responsible for freeing the underlying C++ object
|
dispose, finalize
protected AbstractImmutableNativeReference(boolean owningHandle)
public boolean isOwningHandle()
AbstractNativeReference
isOwningHandle
in class AbstractNativeReference
AbstractNativeReference.dispose()
protected final void disOwnNativeHandle()
AbstractNativeReference
from the responsibility of
freeing the underlying native C++ object
This will prevent the object from attempting to delete the underlying native object in its finalizer. This must be used when another object takes over ownership of the native object or both will attempt to delete the underlying object when garbage collected.
When disOwnNativeHandle()
is called, dispose()
will
subsequently take no action. As a result, incorrect use of this function
may cause a memory leak.
AbstractNativeReference.dispose()
public void close()
AbstractNativeReference
It is strong recommended that the developer calls this after they have finished using the object.
Note, that once an instance of AbstractNativeReference
has been
disposed, calling any of its functions will lead to undefined
behavior.
close
in interface java.lang.AutoCloseable
close
in class AbstractNativeReference
protected abstract void disposeInternal()
AbstractNativeReference.dispose()
which all subclasses of AbstractImmutableNativeReference
must
implement to release their underlying native C++ objects.