FrequencyTrackingRingBuffer (Lucene 10.5.0 core API)
Description: declaration: package: org.apache.lucene.util, class: FrequencyTrackingRingBuffer

Package org.apache.lucene.util

# Class FrequencyTrackingRingBuffer

java.lang.Object
org.apache.lucene.util.FrequencyTrackingRingBuffer

All Implemented Interfaces:
  `Accountable`

public final class FrequencyTrackingRingBuffer extends Object implements Accountable
A ring buffer that tracks the frequency of the integers that it contains. This is typically useful to track the hash codes of popular recently-used items.

This data-structure requires 22 bytes per entry on average (between 16 and 28).

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

- ## Field Summary

  ### Fields inherited from interface org.apache.lucene.util.Accountable

  `NULL_ACCOUNTABLE`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `FrequencyTrackingRingBuffer(int maxSize, int sentinel)`
  Create a new ring buffer that will contain at most `maxSize` items.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `add(int i)`
  Add a new item to this ring buffer, potentially removing the oldest entry from this buffer if it is already full.
  `int`
  `frequency(int key)`
  Returns the frequency of the provided key in the ring buffer.
  `long`
  `ramBytesUsed()`
  Returns an estimate of the JVM heap memory used by this object in bytes.

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

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

  ### Methods inherited from interface org.apache.lucene.util.Accountable

  `getChildResources`

- ## Constructor Details

  - ### FrequencyTrackingRingBuffer

    public FrequencyTrackingRingBuffer(int maxSize, int sentinel)
    Create a new ring buffer that will contain at most `maxSize` items. This buffer will initially contain `maxSize` times the `sentinel` value.

- ## Method Details

  - ### ramBytesUsed

    public long ramBytesUsed()
    Description copied from interface: `Accountable`
    Returns an estimate of the JVM heap memory used by this object in bytes. The method name uses "ram" for historical reasons; only JVM heap memory should be reported. Off-heap resources such as memory-mapped files or native direct buffers should not be included. Negative values are illegal.
    Specified by:
      `ramBytesUsed` in interface `Accountable`

  - ### add

    public void add(int i)
    Add a new item to this ring buffer, potentially removing the oldest entry from this buffer if it is already full.

  - ### frequency

    public int frequency(int key)
    Returns the frequency of the provided key in the ring buffer.