Class 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 Detail

      • DEFAULT_ALLOCATION_SIZE

        public static final int DEFAULT_ALLOCATION_SIZE
        default size for internal buffer allocation.
        See Also:
        Constant Field Values
    • Method Detail

      • 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.
      • 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)