Class CachedBufferFactory

java.lang.Object
com.jogamp.common.nio.CachedBufferFactory

public class CachedBufferFactory extends Object
Buffer factory attempting to reduce buffer creation overhead. Direct ByteBuffers must be page aligned which increases creation overhead of small buffers significantly. This factory can be used as fixed size static or or dynamic allocating factory. The initial size and allocation size is configurable.

Fixed size factories may be used in systems with hard realtime requirements and/or predictable memory usage.

concurrency info:

  • all create methods are threadsafe
  • factories created with create(...) are not threadsafe
  • factories created with createSynchronized(...) are threadsafe

Author:
Michael Bien
  • Field Details

    • DEFAULT_ALLOCATION_SIZE

      public static final int DEFAULT_ALLOCATION_SIZE
      default size for internal buffer allocation.
      See Also:
  • Method Details

    • create

      public static CachedBufferFactory create()
      Creates a factory with initial size and allocation size set to DEFAULT_ALLOCATION_SIZE.
    • create

      public static CachedBufferFactory create(int initialSize)
      Creates a factory with the specified initial size. The allocation size is set to DEFAULT_ALLOCATION_SIZE.
    • create

      public static CachedBufferFactory create(int initialSize, boolean fixed)
      Creates a factory with the specified initial size. The allocation size is set to DEFAULT_ALLOCATION_SIZE.
      Parameters:
      fixed - Creates a fixed size factory which will handle overflows (initial size) with RuntimeExceptions.
    • create

      public static CachedBufferFactory create(int initialSize, int allocationSize)
      Creates a factory with the specified initial size and allocation size.
    • createSynchronized

      public static CachedBufferFactory createSynchronized()
      Synchronized version of create().
    • createSynchronized

      public static CachedBufferFactory createSynchronized(int initialSize)
      Synchronized version of create(int).
    • createSynchronized

      public static CachedBufferFactory createSynchronized(int initialSize, boolean fixed)
      Synchronized version of create(int, boolean).
    • createSynchronized

      public static CachedBufferFactory createSynchronized(int initialSize, int allocationSize)
      Synchronized version of create(int, int).
    • isFixed

      public boolean isFixed()
      Returns true only if this factory does not allow to allocate more buffers as limited by the initial size.
    • getAllocationSize

      public int getAllocationSize()
      Returns the allocation size used to create new internal buffers. 0 means that the buffer will not grows, see isFixed().
    • destroy

      public void destroy()
    • newDirectByteBuffer

      public ByteBuffer newDirectByteBuffer(int size)
    • newDirectByteBuffer

      public ByteBuffer newDirectByteBuffer(byte[] values, int offset, int lenght)
    • newDirectByteBuffer

      public ByteBuffer newDirectByteBuffer(byte[] values, int offset)
    • newDirectByteBuffer

      public ByteBuffer newDirectByteBuffer(byte[] values)
    • newDirectDoubleBuffer

      public DoubleBuffer newDirectDoubleBuffer(int numElements)
    • newDirectDoubleBuffer

      public DoubleBuffer newDirectDoubleBuffer(double[] values, int offset, int lenght)
    • newDirectDoubleBuffer

      public DoubleBuffer newDirectDoubleBuffer(double[] values, int offset)
    • newDirectDoubleBuffer

      public DoubleBuffer newDirectDoubleBuffer(double[] values)
    • newDirectFloatBuffer

      public FloatBuffer newDirectFloatBuffer(int numElements)
    • newDirectFloatBuffer

      public FloatBuffer newDirectFloatBuffer(float[] values, int offset, int lenght)
    • newDirectFloatBuffer

      public FloatBuffer newDirectFloatBuffer(float[] values, int offset)
    • newDirectFloatBuffer

      public FloatBuffer newDirectFloatBuffer(float[] values)
    • newDirectIntBuffer

      public IntBuffer newDirectIntBuffer(int numElements)
    • newDirectIntBuffer

      public IntBuffer newDirectIntBuffer(int[] values, int offset, int lenght)
    • newDirectIntBuffer

      public IntBuffer newDirectIntBuffer(int[] values, int offset)
    • newDirectIntBuffer

      public IntBuffer newDirectIntBuffer(int[] values)
    • newDirectLongBuffer

      public LongBuffer newDirectLongBuffer(int numElements)
    • newDirectLongBuffer

      public LongBuffer newDirectLongBuffer(long[] values, int offset, int lenght)
    • newDirectLongBuffer

      public LongBuffer newDirectLongBuffer(long[] values, int offset)
    • newDirectLongBuffer

      public LongBuffer newDirectLongBuffer(long[] values)
    • newDirectShortBuffer

      public ShortBuffer newDirectShortBuffer(int numElements)
    • newDirectShortBuffer

      public ShortBuffer newDirectShortBuffer(short[] values, int offset, int lenght)
    • newDirectShortBuffer

      public ShortBuffer newDirectShortBuffer(short[] values, int offset)
    • newDirectShortBuffer

      public ShortBuffer newDirectShortBuffer(short[] values)
    • newDirectCharBuffer

      public CharBuffer newDirectCharBuffer(int numElements)
    • newDirectCharBuffer

      public CharBuffer newDirectCharBuffer(char[] values, int offset, int lenght)
    • newDirectCharBuffer

      public CharBuffer newDirectCharBuffer(char[] values, int offset)
    • newDirectCharBuffer

      public CharBuffer newDirectCharBuffer(char[] values)
    • equals

      public boolean equals(Object obj)
      Overrides:
      equals in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object