Interface Cleaner

All Known Implementing Classes:
CleanerJava24Linker, CleanerJava25, CleanerJava6, CleanerJava9, DirectCleaner

interface Cleaner
Allows to free direct ByteBuffers.
  • Method Details

    • allocate

      CleanableDirectBuffer allocate(int capacity)
      Create a direct ByteBuffer and return it alongside its cleaning mechanism, in a CleanableDirectBuffer.
      Parameters:
      capacity - The desired capacity of the direct buffer.
      Returns:
      The new CleanableDirectBuffer instance.
    • reallocate

      default CleanableDirectBuffer reallocate(CleanableDirectBuffer old, int newCapacity)
      Reallocate a direct buffer with a new capacity. The old buffer is consumed and must not be used after this call.

      The default implementation allocates a new buffer, copies the data, and frees the old one. Implementations may override this to provide more efficient reallocation (e.g. via Unsafe.reallocateMemory).

    • freeDirectBuffer

      @Deprecated void freeDirectBuffer(ByteBuffer buffer)
      Deprecated.
      Instead allocate buffers from allocate(int) and use the associated CleanableDirectBuffer.clean() method.
      Free a direct ByteBuffer if possible
    • hasExpensiveClean

      boolean hasExpensiveClean()
      Check if the clean operation is "relatively expensive". Expensive clean operations are fine for pooling allocators, but should be avoided for unpooled buffers.
      Returns:
      true if this Cleaner has an expensive clean (i.e. CleanableDirectBuffer.clean()) operation.