Module swim.util
Package swim.util

Class HashGenCacheMap<K,​V>


  • public class HashGenCacheMap<K,​V>
    extends Object
    A hashed generational cache map discards the least recently used value with the worst hit rate per hash bucket. HashGenCacheMap is a concurrent and lock-free LRFU cache, with O(1) access time.

    Maintaining four "generations" of cached values per hash bucket, the cache discards from the younger generations based on least recent usage, and promotes younger generations to older generations based on most frequent usage. Cache misses count as negative usage of the older generations, biasing the cache against least recently used values with poor hit rates.

    The cache soft references the older generations, and weak references the younger generations; the garbage collector can reclaim the entire cache, but will preferentially wipe the younger cache generations before the older cache generations.

    • Constructor Detail

      • HashGenCacheMap

        public HashGenCacheMap​(int size)
    • Method Detail

      • get

        public V get​(K key)
      • put

        public V put​(K key,
                     V value)
      • weaken

        public boolean weaken​(K key)
      • remove

        public V remove​(K key)
      • clear

        public void clear()
      • hitRatio

        public double hitRatio()