Package com.jogamp.common.nio
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 Summary
Fields Modifier and Type Field Description static intDEFAULT_ALLOCATION_SIZEdefault size for internal buffer allocation.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static CachedBufferFactorycreate()Creates a factory with initial size and allocation size set toDEFAULT_ALLOCATION_SIZE.static CachedBufferFactorycreate(int initialSize)Creates a factory with the specified initial size.static CachedBufferFactorycreate(int initialSize, boolean fixed)Creates a factory with the specified initial size.static CachedBufferFactorycreate(int initialSize, int allocationSize)Creates a factory with the specified initial size and allocation size.static CachedBufferFactorycreateSynchronized()Synchronized version ofcreate().static CachedBufferFactorycreateSynchronized(int initialSize)Synchronized version ofcreate(int).static CachedBufferFactorycreateSynchronized(int initialSize, boolean fixed)Synchronized version ofcreate(int, boolean).static CachedBufferFactorycreateSynchronized(int initialSize, int allocationSize)Synchronized version ofcreate(int, int).voiddestroy()booleanequals(Object obj)intgetAllocationSize()Returns the allocation size used to create new internal buffers.booleanisFixed()Returns true only if this factory does not allow to allocate more buffers as limited by the initial size.ByteBuffernewDirectByteBuffer(byte[] values)ByteBuffernewDirectByteBuffer(byte[] values, int offset)ByteBuffernewDirectByteBuffer(byte[] values, int offset, int lenght)ByteBuffernewDirectByteBuffer(int size)CharBuffernewDirectCharBuffer(char[] values)CharBuffernewDirectCharBuffer(char[] values, int offset)CharBuffernewDirectCharBuffer(char[] values, int offset, int lenght)CharBuffernewDirectCharBuffer(int numElements)DoubleBuffernewDirectDoubleBuffer(double[] values)DoubleBuffernewDirectDoubleBuffer(double[] values, int offset)DoubleBuffernewDirectDoubleBuffer(double[] values, int offset, int lenght)DoubleBuffernewDirectDoubleBuffer(int numElements)FloatBuffernewDirectFloatBuffer(float[] values)FloatBuffernewDirectFloatBuffer(float[] values, int offset)FloatBuffernewDirectFloatBuffer(float[] values, int offset, int lenght)FloatBuffernewDirectFloatBuffer(int numElements)IntBuffernewDirectIntBuffer(int numElements)IntBuffernewDirectIntBuffer(int[] values)IntBuffernewDirectIntBuffer(int[] values, int offset)IntBuffernewDirectIntBuffer(int[] values, int offset, int lenght)LongBuffernewDirectLongBuffer(int numElements)LongBuffernewDirectLongBuffer(long[] values)LongBuffernewDirectLongBuffer(long[] values, int offset)LongBuffernewDirectLongBuffer(long[] values, int offset, int lenght)ShortBuffernewDirectShortBuffer(int numElements)ShortBuffernewDirectShortBuffer(short[] values)ShortBuffernewDirectShortBuffer(short[] values, int offset)ShortBuffernewDirectShortBuffer(short[] values, int offset, int lenght)StringtoString()
-
-
-
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()
Creates a factory with initial size and allocation size set toDEFAULT_ALLOCATION_SIZE.
-
create
public static CachedBufferFactory create(int initialSize)
Creates a factory with the specified initial size. The allocation size is set toDEFAULT_ALLOCATION_SIZE.
-
create
public static CachedBufferFactory create(int initialSize, boolean fixed)
Creates a factory with the specified initial size. The allocation size is set toDEFAULT_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 ofcreate().
-
createSynchronized
public static CachedBufferFactory createSynchronized(int initialSize)
Synchronized version ofcreate(int).
-
createSynchronized
public static CachedBufferFactory createSynchronized(int initialSize, boolean fixed)
Synchronized version ofcreate(int, boolean).
-
createSynchronized
public static CachedBufferFactory createSynchronized(int initialSize, int allocationSize)
Synchronized version ofcreate(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, seeisFixed().
-
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)
-
-