Class ObjectCache<KEY,​VALUE>


  • public class ObjectCache<KEY,​VALUE>
    extends java.lang.Object
    An in-memory object cache supporting soft/weak/strong references, maximum size (clearing the entries that were put first), and time-based expiration.
    • Field Detail

      • isStrongReference

        private final boolean isStrongReference
      • maxSize

        private final int maxSize
      • expirationMillis

        private final long expirationMillis
      • isExpiring

        private final boolean isExpiring
      • nextCleanUpTimestamp

        private volatile long nextCleanUpTimestamp
      • countPutCountSinceEviction

        private volatile int countPutCountSinceEviction
      • countPut

        private volatile int countPut
      • countHit

        private volatile int countHit
      • countMiss

        private volatile int countMiss
      • countExpired

        private volatile int countExpired
      • countRefCleared

        private volatile int countRefCleared
      • countEvicted

        private volatile int countEvicted
    • Constructor Detail

      • ObjectCache

        public ObjectCache​(ObjectCache.ReferenceType referenceType,
                           int maxSize,
                           long expirationMillis)
        Create a cache according to the given configuration.
        Parameters:
        referenceType - SOFT is usually a good choice allowing the VM to clear caches when running low on memory. STRONG may also be preferred, e.g. when the required space is granted.
        maxSize - The maximum number of entries stored by this cache
        expirationMillis -
    • Method Detail

      • put

        public VALUE put​(KEY key,
                         VALUE object)
        Stores an new entry in the cache.
      • putAll

        public void putAll​(java.util.Map<KEY,​VALUE> mapDataToPut)
        Stores all entries contained in the given map in the cache.
      • get

        public VALUE get​(KEY key)
        Get the cached entry or null if no valid cached entry is found.
      • clear

        public void clear()
        Clears all cached entries.
      • remove

        public VALUE remove​(KEY key)
        Removes an entry from the cache.
        Returns:
        The removed entry
      • evictToTargetSize

        public void evictToTargetSize​(int targetSize)
      • checkCleanUpObsoleteEntries

        void checkCleanUpObsoleteEntries()
      • cleanUpObsoleteEntries

        public int cleanUpObsoleteEntries()
        Iterates over all entries to check for obsolete ones (time expired or reference cleared).

        Note: Usually you don't need to call this method explicitly, because it is called internally in certain conditions when space has to be reclaimed.

      • containsKey

        public boolean containsKey​(KEY key)
      • containsKeyWithValue

        public boolean containsKeyWithValue​(KEY key)
      • keySet

        public java.util.Set<KEY> keySet()
      • getMaxSize

        public int getMaxSize()
      • size

        public int size()
      • getCountPut

        public int getCountPut()
      • getCountHit

        public int getCountHit()
      • getCountMiss

        public int getCountMiss()
      • getCountExpired

        public int getCountExpired()
      • getCountRefCleared

        public int getCountRefCleared()
      • getCountEvicted

        public int getCountEvicted()
      • toString

        public java.lang.String toString()
        Overrides:
        toString in class java.lang.Object
      • getStatsStringRemoved

        public java.lang.String getStatsStringRemoved()
        Often used in addition to toString() to print out states: details why entries were removed.