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