Class DualState.SingleMemContextDelete<T>

  • Enclosing class:
    DualState<T>

    public abstract static class DualState.SingleMemContextDelete<T>
    extends DualState.SingleGuardedLong<T>
    A DualState subclass whose only native resource releasing action needed is MemoryContextDelete of a single context.

    This class may get called at the nativeStateReleased entry, not only if the native state is actually being released, but if it is being 'claimed' by native code for its own purposes. The effect is the same as far as Java is concerned; the object is no longer accessible, and the native code is responsible for whatever happens to it next.

    • Constructor Detail

      • SingleMemContextDelete

        protected SingleMemContextDelete​(DualState.Key cookie,
                                         T referent,
                                         long resourceOwner,
                                         long memoryContext)
    • Method Detail

      • formatString

        public String formatString()
        Description copied from class: DualState.SingleGuardedLong
        Return a printf format string resembling "%s something(%x)" where the %x will be the value being guarded; the "something" should indicate what the value represents, or what will be done with it when released by Java.
        Overrides:
        formatString in class DualState.SingleGuardedLong<T>
      • javaStateUnreachable

        protected void javaStateUnreachable​(boolean nativeStateLive)
        When the Java state is released or unreachable, a MemoryContextDelete call is made so the native memory is released without having to wait for release of its parent context.
        Overrides:
        javaStateUnreachable in class DualState<T>
        Parameters:
        nativeStateLive - true is passed if the instance's "native state" is still considered live, that is, no resource-owner callback has been invoked to stamp it invalid (nor has it been "adopted").