public abstract class AbstractImmutableNativeReference extends AbstractNativeReference
AbstractNativeReference which have an immutable reference to the
underlying native C++ object| 限定符和类型 | 字段和说明 |
|---|---|
protected java.util.concurrent.atomic.AtomicBoolean |
owningHandle_
A flag indicating whether the current
AbstractNativeReference is
responsible to free the underlying C++ object |
| 限定符 | 构造器和说明 |
|---|---|
protected |
AbstractImmutableNativeReference(boolean owningHandle) |
| 限定符和类型 | 方法和说明 |
|---|---|
void |
close()
Frees the underlying C++ object
It is strong recommended that the developer calls this after they
have finished using the object.
|
protected void |
disOwnNativeHandle()
Releases this
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 close(). |
protected abstract void |
disposeInternal()
The helper function of
close()
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
|
protected final java.util.concurrent.atomic.AtomicBoolean owningHandle_
AbstractNativeReference is
responsible to free the underlying C++ objectprotected AbstractImmutableNativeReference(boolean owningHandle)
public boolean isOwningHandle()
AbstractNativeReferenceisOwningHandle 在类中 AbstractNativeReferenceprotected 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 close(). This must be used when another object
takes over ownership of the native object or both will attempt to delete
the underlying object when closed.
When disOwnNativeHandle() is called, close() will
subsequently take no action. As a result, incorrect use of this function
may cause a memory leak.
public void close()
AbstractNativeReferenceIt is strong recommended that the developer calls this after they have finished using the object.
Note, that once an instance of AbstractNativeReference has been
closed, calling any of its functions will lead to undefined
behavior.
close 在接口中 java.lang.AutoCloseableclose 在类中 AbstractNativeReferenceprotected abstract void disposeInternal()
close()
which all subclasses of AbstractImmutableNativeReference must
implement to release their underlying native C++ objects.