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.
  • 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
      Return the memory usage of this object in bytes. 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.