com.fasterxml.jackson.core.util

## Class BufferRecyclers

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

    public class BufferRecyclers
    extends Object

Helper entity used to control access to simple buffer recyling scheme used for some encoding, decoding tasks.

Since:
  2.9.2
See Also:
  `BufferRecycler`, `JsonStringEncoder`

### Field Summary

Fields
`protected static ThreadLocal<SoftReference<JsonStringEncoder>>` `_encoderRef` This `ThreadLocal` contains a `SoftReference` to a `BufferRecycler` used to provide a low-cost buffer recycling between reader and writer instances.
`protected static ThreadLocal<SoftReference<BufferRecycler>>` `_recyclerRef` This `ThreadLocal` contains a `SoftReference` to a `BufferRecycler` used to provide a low-cost buffer recycling between reader and writer instances.
`static String` `SYSTEM_PROPERTY_TRACK_REUSABLE_BUFFERS` System property that is checked to see if recycled buffers (see `BufferRecycler`) should be tracked, for purpose of forcing release of all such buffers, typically during major classloading.

### Constructor Summary

Constructors
Constructor and Description
`BufferRecyclers()`

### Method Summary

All Methods Static Methods Concrete Methods
`static byte[]` `encodeAsUTF8(String text)` Helper method for encoding given String as UTF-8 encoded
`static BufferRecycler` `getBufferRecycler()` Main accessor to call for accessing possibly recycled `BufferRecycler` instance.
`static JsonStringEncoder` `getJsonStringEncoder()`
`static void` `quoteAsJsonText(CharSequence input, StringBuilder output)`
`static char[]` `quoteAsJsonText(String rawText)`
`static byte[]` `quoteAsJsonUTF8(String rawText)`
`static int` `releaseBuffers()` Specialized method that will release all recycled `BufferRecycler` if (and only if) recycler tracking has been enabled (see `SYSTEM_PROPERTY_TRACK_REUSABLE_BUFFERS`).

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

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

### Field Detail

#### SYSTEM_PROPERTY_TRACK_REUSABLE_BUFFERS

    public static final String SYSTEM_PROPERTY_TRACK_REUSABLE_BUFFERS

System property that is checked to see if recycled buffers (see `BufferRecycler`) should be tracked, for purpose of forcing release of all such buffers, typically during major classloading.

Since:
  2.9.6
See Also:
  Constant Field Values

#### _recyclerRef

    protected static final ThreadLocal<SoftReference<BufferRecycler>> _recyclerRef

This `ThreadLocal` contains a `SoftReference` to a `BufferRecycler` used to provide a low-cost buffer recycling between reader and writer instances.

#### _encoderRef

    protected static final ThreadLocal<SoftReference<JsonStringEncoder>> _encoderRef

This `ThreadLocal` contains a `SoftReference` to a `BufferRecycler` used to provide a low-cost buffer recycling between reader and writer instances.

### Constructor Detail

#### BufferRecyclers

    public BufferRecyclers()

### Method Detail

#### getBufferRecycler

    public static BufferRecycler getBufferRecycler()

Main accessor to call for accessing possibly recycled `BufferRecycler` instance.

#### releaseBuffers

    public static int releaseBuffers()

Specialized method that will release all recycled `BufferRecycler` if (and only if) recycler tracking has been enabled (see `SYSTEM_PROPERTY_TRACK_REUSABLE_BUFFERS`). This method is usually called on shutdown of the container like Application Server to ensure that no references are reachable via `ThreadLocal`s as this may cause unintentional retention of sizable amounts of memory. It may also be called regularly if GC for some reason does not clear up `SoftReference`s aggressively enough.

Returns:
  Number of buffers released, if tracking enabled (zero or more); -1 if tracking not enabled.
Since:
  2.9.6

#### getJsonStringEncoder

    public static JsonStringEncoder getJsonStringEncoder()

#### encodeAsUTF8

    public static byte[] encodeAsUTF8(String text)

Helper method for encoding given String as UTF-8 encoded

Since:
  2.9.4

#### quoteAsJsonText

    public static char[] quoteAsJsonText(String rawText)

Since:
  2.9.4

#### quoteAsJsonText

    public static void quoteAsJsonText(CharSequence input,
                                       StringBuilder output)

Since:
  2.9.4

#### quoteAsJsonUTF8

    public static byte[] quoteAsJsonUTF8(String rawText)

Since:
  2.9.4