com.fasterxml.jackson.core.util

Class 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 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
    • 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.
        Parameters:
        bbCount - Number of byte[] buffers to allocate
        cbCount - Number of char[] buffers to allocate
        Since:
        2.4
    • Method Detail

      • allocByteBuffer

        public final byte[] allocByteBuffer(int ix)
        Parameters:
        ix - One of READ_IO_BUFFER constants.
        Returns:
        Buffer allocated (possibly recycled)
      • 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–2024 FasterXML. All rights reserved.