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.

### Constructor Summary

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

### Method Summary

All Methods Instance Methods Concrete Methods
`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()` Return the memory usage of 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 Detail

#### 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 Detail

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