Package org.apache.lucene.util

# Class RecyclingIntBlockAllocator

java.lang.Object
org.apache.lucene.util.IntBlockPool.Allocator
org.apache.lucene.util.RecyclingIntBlockAllocator

public final class RecyclingIntBlockAllocator extends IntBlockPool.Allocator
A `IntBlockPool.Allocator` implementation that recycles unused int blocks in a buffer and reuses them in subsequent calls to `getIntBlock()`.

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
  Description
  `static final int`
  `DEFAULT_BUFFERED_BLOCKS`

  ### Fields inherited from class org.apache.lucene.util.IntBlockPool.Allocator

  `blockSize`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `RecyclingIntBlockAllocator()`
  Creates a new `RecyclingIntBlockAllocator` with a block size of `IntBlockPool.INT_BLOCK_SIZE`, upper buffered docs limit of `DEFAULT_BUFFERED_BLOCKS` (64).
  `RecyclingIntBlockAllocator(int blockSize, int maxBufferedBlocks)`
  Creates a new `RecyclingIntBlockAllocator`.
  `RecyclingIntBlockAllocator(int blockSize, int maxBufferedBlocks, Counter bytesUsed)`
  Creates a new `RecyclingIntBlockAllocator`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `long`
  `bytesUsed()`
  `int`
  `freeBlocks(int num)`
  Removes the given number of int blocks from the buffer if possible.
  `int[]`
  `getIntBlock()`
  `int`
  `maxBufferedBlocks()`
  `int`
  `numBufferedBlocks()`
  `void`
  `recycleIntBlocks(int[][] blocks, int start, int end)`

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

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

- ## Field Details

  - ### DEFAULT_BUFFERED_BLOCKS

    public static final int DEFAULT_BUFFERED_BLOCKS
    See Also:
      - Constant Field Values

- ## Constructor Details

  - ### RecyclingIntBlockAllocator

    public RecyclingIntBlockAllocator(int blockSize, int maxBufferedBlocks, Counter bytesUsed)
    Creates a new `RecyclingIntBlockAllocator`
    Parameters:
      `blockSize` - the block size in bytes
      `maxBufferedBlocks` - maximum number of buffered int block
      `bytesUsed` - `Counter` reference counting internally allocated bytes

  - ### RecyclingIntBlockAllocator

    public RecyclingIntBlockAllocator(int blockSize, int maxBufferedBlocks)
    Creates a new `RecyclingIntBlockAllocator`.
    Parameters:
      `blockSize` - the size of each block returned by this allocator
      `maxBufferedBlocks` - maximum number of buffered int blocks

  - ### RecyclingIntBlockAllocator

    public RecyclingIntBlockAllocator()
    Creates a new `RecyclingIntBlockAllocator` with a block size of `IntBlockPool.INT_BLOCK_SIZE`, upper buffered docs limit of `DEFAULT_BUFFERED_BLOCKS` (64).

- ## Method Details

  - ### getIntBlock

    public int[] getIntBlock()
    Overrides:
      `getIntBlock` in class `IntBlockPool.Allocator`

  - ### recycleIntBlocks

    public void recycleIntBlocks(int[][] blocks, int start, int end)
    Specified by:
      `recycleIntBlocks` in class `IntBlockPool.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 `IntBlockPool.Allocator`

  - ### maxBufferedBlocks

    public int maxBufferedBlocks()
    Returns:
      the maximum number of buffered byte blocks

  - ### freeBlocks

    public int freeBlocks(int num)
    Removes the given number of int blocks from the buffer if possible.
    Parameters:
      `num` - the number of int blocks to remove
    Returns:
      the number of actually removed buffers