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()`
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 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.