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
    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.