Package org.apache.activemq.util
Class LFUCache<Key,Value>
java.lang.Object
org.apache.activemq.util.LFUCache<Key,Value>
- All Implemented Interfaces:
Map<Key,Value>
LFU cache implementation based on http://dhruvbird.com/lfu.pdf, with some notable differences:
- Frequency list is stored as an array with no next/prev pointers between nodes: looping over the array should be faster and more CPU-cache friendly than using an ad-hoc linked-pointers structure.
- The max frequency is capped at the cache size to avoid creating more and more frequency list entries, and all elements residing in the max frequency entry are re-positioned in the frequency entry linked set in order to put most recently accessed elements ahead of less recently ones, which will be collected sooner.
- The eviction factor determines how many elements (more specifically, the percentage of) will be evicted.
- Author:
- Sergio Bossa
-
Nested Class Summary
-
Constructor Summary
Constructors -
Method Summary
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, equals, forEach, getOrDefault, hashCode, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
LFUCache
public LFUCache(int maxCacheSize, float evictionFactor)
-
-
Method Details
-
put
-
putAll
-
get
-
remove
-
frequencyOf
-
clear
public void clear() -
keySet
-
values
-
entrySet
-
size
public int size() -
isEmpty
public boolean isEmpty() -
containsKey
- Specified by:
containsKeyin interfaceMap<Key,Value>
-
containsValue
- Specified by:
containsValuein interfaceMap<Key,Value>
-