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 Details

    • DEFAULT_BUFFERED_BLOCKS

      public static final int DEFAULT_BUFFERED_BLOCKS
      See Also:
  • Constructor Details

    • RecyclingByteBlockAllocator

      public RecyclingByteBlockAllocator(int blockSize, int maxBufferedBlocks, Counter bytesUsed)
      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)
      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 Details

    • 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