Class ObjectCache<KEY,VALUE>

java.lang.Object
org.greenrobot.essentials.ObjectCache<KEY,VALUE>

public class ObjectCache<KEY,VALUE> extends 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 Details

    • values

      private final Map<KEY,ObjectCache.CacheEntry<VALUE>> values
    • referenceType

      private final ObjectCache.ReferenceType referenceType
    • 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 Details

    • 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 Details

    • put

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

      private VALUE getValueForRemoved(ObjectCache.CacheEntry<VALUE> entry)
    • getValue

      private VALUE getValue(KEY keyForRemoval, ObjectCache.CacheEntry<VALUE> entry)
    • putAll

      public void putAll(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 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 String toString()
      Overrides:
      toString in class Object
    • getStatsStringRemoved

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