Package com.ctc.wstx.io
Class BufferRecycler
java.lang.Object
com.ctc.wstx.io.BufferRecycler
This is a small utility class, whose main functionality is to allow
simple reuse of raw byte/char buffers. It is usually used through
ThreadLocal
member of the owning class pointing to
instance of this class through a SoftReference
. The
end result is a low-overhead GC-cleanable recycling: hopefully
ideal for use by stream readers.
Regarding implementation: the key design goal is simplicity; and to that end, different types of buffers are handled separately. While code may look inelegant as a result (wouldn't it be neat to just have generic char[]/byte[] buffer accessors?), benefit is that no data structures are needed, just simple references. As long as usage pattern is well known (which it is, for stream readers) this should be highly optimal and robust implementation.
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate byte[]
private char[]
private char[]
private char[]
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionbyte[]
getFullBBuffer
(int minSize) char[]
getFullCBuffer
(int minSize) char[]
getMediumCBuffer
(int minSize) char[]
getSmallCBuffer
(int minSize) void
returnFullBBuffer
(byte[] buffer) void
returnFullCBuffer
(char[] buffer) void
returnMediumCBuffer
(char[] buffer) void
returnSmallCBuffer
(char[] buffer)
-
Field Details
-
mSmallCBuffer
private volatile char[] mSmallCBuffer -
mMediumCBuffer
private volatile char[] mMediumCBuffer -
mFullCBuffer
private volatile char[] mFullCBuffer -
mFullBBuffer
private volatile byte[] mFullBBuffer
-
-
Constructor Details
-
BufferRecycler
public BufferRecycler()
-
-
Method Details
-
getSmallCBuffer
public char[] getSmallCBuffer(int minSize) -
returnSmallCBuffer
public void returnSmallCBuffer(char[] buffer) -
getMediumCBuffer
public char[] getMediumCBuffer(int minSize) -
returnMediumCBuffer
public void returnMediumCBuffer(char[] buffer) -
getFullCBuffer
public char[] getFullCBuffer(int minSize) -
returnFullCBuffer
public void returnFullCBuffer(char[] buffer) -
getFullBBuffer
public byte[] getFullBBuffer(int minSize) -
returnFullBBuffer
public void returnFullBBuffer(byte[] buffer)
-