Class BufferRecycler

java.lang.Object
com.ctc.wstx.io.BufferRecycler

public final class BufferRecycler extends Object
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 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)