org.apache.lucene.util

## Class RecyclingByteBlockAllocator

- java.lang.Object
- - org.apache.lucene.util.ByteBlockPool.Allocator
  - - org.apache.lucene.util.RecyclingByteBlockAllocator

-     public final class RecyclingByteBlockAllocator
      extends ByteBlockPool.Allocator

  A `ByteBlockPool.Allocator` implementation that recycles unused byte blocks in a buffer and reuses them in subsequent calls to `getByteBlock()`.

  Note: This class is not thread-safe

  NOTE: This API is for internal purposes only and might change in incompatible ways in the next release.

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `DEFAULT_BUFFERED_BLOCKS`

    - ### Fields inherited from class org.apache.lucene.util.ByteBlockPool.Allocator

      `blockSize`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `RecyclingByteBlockAllocator()` Creates a new `RecyclingByteBlockAllocator` with a block size of `ByteBlockPool.BYTE_BLOCK_SIZE`, upper buffered docs limit of `DEFAULT_BUFFERED_BLOCKS` (64).
    `RecyclingByteBlockAllocator(int blockSize, int maxBufferedBlocks)` Creates a new `RecyclingByteBlockAllocator`.
    `RecyclingByteBlockAllocator(int blockSize, int maxBufferedBlocks, Counter bytesUsed)` Creates a new `RecyclingByteBlockAllocator`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `long` | `bytesUsed()`
    `int` | `freeBlocks(int num)` Removes the given number of byte blocks from the buffer if possible.
    `byte[]` | `getByteBlock()`
    `int` | `maxBufferedBlocks()`
    `int` | `numBufferedBlocks()`
    `void` | `recycleByteBlocks(byte[][] blocks, int start, int end)`

    - ### Methods inherited from class org.apache.lucene.util.ByteBlockPool.Allocator

      `recycleByteBlocks`

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

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

- - ### Field Detail

    - #### DEFAULT_BUFFERED_BLOCKS

          public static final int DEFAULT_BUFFERED_BLOCKS

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### RecyclingByteBlockAllocator

          public RecyclingByteBlockAllocator(int blockSize,
                                             int maxBufferedBlocks,
                                             Counter bytesUsed)

      Creates a new `RecyclingByteBlockAllocator`
      Parameters:
        `blockSize` - the block size in bytes
        `maxBufferedBlocks` - maximum number of buffered byte block
        `bytesUsed` - `Counter` reference counting internally allocated bytes

    - #### RecyclingByteBlockAllocator

          public RecyclingByteBlockAllocator(int blockSize,
                                             int maxBufferedBlocks)

      Creates a new `RecyclingByteBlockAllocator`.
      Parameters:
        `blockSize` - the block size in bytes
        `maxBufferedBlocks` - maximum number of buffered byte block

    - #### RecyclingByteBlockAllocator

          public RecyclingByteBlockAllocator()

      Creates a new `RecyclingByteBlockAllocator` with a block size of `ByteBlockPool.BYTE_BLOCK_SIZE`, upper buffered docs limit of `DEFAULT_BUFFERED_BLOCKS` (64).

  - ### Method Detail

    - #### getByteBlock

          public byte[] getByteBlock()

      Overrides:
        `getByteBlock` in class `ByteBlockPool.Allocator`

    - #### recycleByteBlocks

          public void recycleByteBlocks(byte[][] blocks,
                                        int start,
                                        int end)

      Specified by:
        `recycleByteBlocks` in class `ByteBlockPool.Allocator`

    - #### numBufferedBlocks

          public int numBufferedBlocks()

      Returns:
        the number of currently buffered blocks

    - #### bytesUsed

          public long bytesUsed()

      Returns:
        the number of bytes currently allocated by this `ByteBlockPool.Allocator`

    - #### maxBufferedBlocks

          public int maxBufferedBlocks()

      Returns:
        the maximum number of buffered byte blocks

    - #### freeBlocks

          public int freeBlocks(int num)

      Removes the given number of byte blocks from the buffer if possible.
      Parameters:
        `num` - the number of byte blocks to remove
      Returns:
        the number of actually removed buffers

Copyright © 2000-2021 Apache Software Foundation. All Rights Reserved.