BufferRecycler
Date: 2016-12-03

com.fasterxml.jackson.core.util

## Class BufferRecycler

- java.lang.Object
- - com.fasterxml.jackson.core.util.BufferRecycler

-     public class BufferRecycler
      extends java.lang.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.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected byte[][]` | `_byteBuffers`
    `protected char[][]` | `_charBuffers`
    `static int` | `BYTE_BASE64_CODEC_BUFFER` Buffer used for concatenating binary data that is either being encoded as base64 output, or decoded from base64 input.
    `static int` | `BYTE_READ_IO_BUFFER` Buffer used for reading byte-based input.
    `static int` | `BYTE_WRITE_CONCAT_BUFFER` Buffer used for temporarily concatenating output; used for example when requesting output as byte array.
    `static int` | `BYTE_WRITE_ENCODING_BUFFER` Buffer used for temporarily storing encoded content; used for example by UTF-8 encoding writer
    `static int` | `CHAR_CONCAT_BUFFER`
    `static int` | `CHAR_NAME_COPY_BUFFER`
    `static int` | `CHAR_TEXT_BUFFER`
    `static int` | `CHAR_TOKEN_BUFFER`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor and Description
    --- | ---
    `` | `BufferRecycler()` Default constructor used for creating instances of this default implementation.
    `protected` | `BufferRecycler(int bbCount, int cbCount)` Alternate constructor to be used by sub-classes, to allow customization of number of low-level buffers in use.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `byte[]` | `allocByteBuffer(int ix)`
    `byte[]` | `allocByteBuffer(int ix, int minSize)`
    `char[]` | `allocCharBuffer(int ix)`
    `char[]` | `allocCharBuffer(int ix, int minSize)`
    `protected byte[]` | `balloc(int size)`
    `protected int` | `byteBufferLength(int ix)`
    `protected char[]` | `calloc(int size)`
    `protected int` | `charBufferLength(int ix)`
    `void` | `releaseByteBuffer(int ix, byte[] buffer)`
    `void` | `releaseCharBuffer(int ix, char[] buffer)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### BYTE_READ_IO_BUFFER

          public static final int BYTE_READ_IO_BUFFER

      Buffer used for reading byte-based input.
      See Also:
        Constant Field Values

    - #### BYTE_WRITE_ENCODING_BUFFER

          public static final int BYTE_WRITE_ENCODING_BUFFER

      Buffer used for temporarily storing encoded content; used for example by UTF-8 encoding writer
      See Also:
        Constant Field Values

    - #### BYTE_WRITE_CONCAT_BUFFER

          public static final int BYTE_WRITE_CONCAT_BUFFER

      Buffer used for temporarily concatenating output; used for example when requesting output as byte array.
      See Also:
        Constant Field Values

    - #### BYTE_BASE64_CODEC_BUFFER

          public static final int BYTE_BASE64_CODEC_BUFFER

      Buffer used for concatenating binary data that is either being encoded as base64 output, or decoded from base64 input.
      Since:
        2.1
      See Also:
        Constant Field Values

    - #### CHAR_TOKEN_BUFFER

          public static final int CHAR_TOKEN_BUFFER

      See Also:
        Constant Field Values

    - #### CHAR_CONCAT_BUFFER

          public static final int CHAR_CONCAT_BUFFER

      See Also:
        Constant Field Values

    - #### CHAR_TEXT_BUFFER

          public static final int CHAR_TEXT_BUFFER

      See Also:
        Constant Field Values

    - #### CHAR_NAME_COPY_BUFFER

          public static final int CHAR_NAME_COPY_BUFFER

      See Also:
        Constant Field Values

    - #### _byteBuffers

          protected final byte[][] _byteBuffers

    - #### _charBuffers

          protected final char[][] _charBuffers

  - ### Constructor Detail

    - #### BufferRecycler

          public BufferRecycler()

      Default constructor used for creating instances of this default implementation.

    - #### BufferRecycler

          protected BufferRecycler(int bbCount,
                        int cbCount)

      Alternate constructor to be used by sub-classes, to allow customization of number of low-level buffers in use.
      Since:
        2.4

  - ### Method Detail

    - #### allocByteBuffer

          public final byte[] allocByteBuffer(int ix)

      Parameters:
        `ix` - One of `READ_IO_BUFFER` constants.

    - #### allocByteBuffer

          public byte[] allocByteBuffer(int ix,
                               int minSize)

    - #### releaseByteBuffer

          public final void releaseByteBuffer(int ix,
                               byte[] buffer)

    - #### allocCharBuffer

          public final char[] allocCharBuffer(int ix)

    - #### allocCharBuffer

          public char[] allocCharBuffer(int ix,
                               int minSize)

    - #### releaseCharBuffer

          public void releaseCharBuffer(int ix,
                               char[] buffer)

    - #### byteBufferLength

          protected int byteBufferLength(int ix)

    - #### charBufferLength

          protected int charBufferLength(int ix)

    - #### balloc

          protected byte[] balloc(int size)

    - #### calloc

          protected char[] calloc(int size)