com.fasterxml.jackson.core.util

## Class BufferRecycler

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

-     public 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.

  Rewritten in 2.10 to be thread-safe (see [jackson-core#479] for details), to not rely on `ThreadLocal` access.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `protected AtomicReferenceArray<byte[]>` | `_byteBuffers`
    `protected AtomicReferenceArray<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` Buffer used by generators; for byte-backed generators for buffering of `String` values to output (before encoding into UTF-8), and for char-backed generators as actual concatenation buffer.
    `static int` | `CHAR_NAME_COPY_BUFFER` For parsers, temporary buffer into which `char[]` for names is copied when requested as such; for `WriterBasedGenerator` used for buffering during `writeString(Reader)` operation (not commonly used).
    `static int` | `CHAR_TEXT_BUFFER` Used through `TextBuffer`: directly by parsers (to concatenate String values) and indirectly via `SegmentedStringWriter` when serializing (databind level `ObjectMapper` and `ObjectWriter`).
    `static int` | `CHAR_TOKEN_BUFFER` Buffer used as input buffer for tokenization for character-based parsers.

  - ### 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

    All Methods Instance Methods Concrete 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

      Buffer used as input buffer for tokenization for character-based parsers.
      See Also:
        Constant Field Values

    - #### CHAR_CONCAT_BUFFER

          public static final int CHAR_CONCAT_BUFFER

      Buffer used by generators; for byte-backed generators for buffering of `String` values to output (before encoding into UTF-8), and for char-backed generators as actual concatenation buffer.
      See Also:
        Constant Field Values

    - #### CHAR_TEXT_BUFFER

          public static final int CHAR_TEXT_BUFFER

      Used through `TextBuffer`: directly by parsers (to concatenate String values) and indirectly via `SegmentedStringWriter` when serializing (databind level `ObjectMapper` and `ObjectWriter`). In both cases used as segments (and not for whole value), but may result in retention of larger chunks for big content (long text values during parsing; bigger output documents for generation).
      See Also:
        Constant Field Values

    - #### CHAR_NAME_COPY_BUFFER

          public static final int CHAR_NAME_COPY_BUFFER

      For parsers, temporary buffer into which `char[]` for names is copied when requested as such; for `WriterBasedGenerator` used for buffering during `writeString(Reader)` operation (not commonly used).
      See Also:
        Constant Field Values

    - #### _byteBuffers

          protected final AtomicReferenceArray<byte[]> _byteBuffers

    - #### _charBuffers

          protected final AtomicReferenceArray<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 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)

Copyright © 2008–2020 FasterXML. All rights reserved.