Package org.greenrobot.essentials
Class ObjectCache<KEY,VALUE>
java.lang.Object
org.greenrobot.essentials.ObjectCache<KEY,VALUE>
An in-memory object cache supporting soft/weak/strong references, maximum size (clearing the entries that were put
first), and time-based expiration.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescription(package private) static class
static enum
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate int
private int
private int
private int
private int
private int
private int
private final long
private final boolean
private final boolean
private final int
private long
private final ObjectCache.ReferenceType
private final Map
<KEY, ObjectCache.CacheEntry<VALUE>> -
Constructor Summary
ConstructorsConstructorDescriptionObjectCache
(ObjectCache.ReferenceType referenceType, int maxSize, long expirationMillis) Create a cache according to the given configuration. -
Method Summary
Modifier and TypeMethodDescription(package private) void
int
Iterates over all entries to check for obsolete ones (time expired or reference cleared).void
clear()
Clears all cached entries.boolean
containsKey
(KEY key) boolean
containsKeyWithValue
(KEY key) void
evictToTargetSize
(int targetSize) Get the cached entry or null if no valid cached entry is found.int
int
int
int
int
int
int
Often used in addition totoString()
to print out states: details why entries were removed.private VALUE
getValue
(KEY keyForRemoval, ObjectCache.CacheEntry<VALUE> entry) private VALUE
keySet()
Stores an new entry in the cache.void
Stores all entries contained in the given map in the cache.Removes an entry from the cache.int
size()
toString()
-
Field Details
-
values
-
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
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 cacheexpirationMillis
-
-
-
Method Details
-
put
Stores an new entry in the cache. -
getValueForRemoved
-
getValue
-
putAll
Stores all entries contained in the given map in the cache. -
get
Get the cached entry or null if no valid cached entry is found. -
clear
public void clear()Clears all cached entries. -
remove
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
-
containsKeyWithValue
-
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
-
getStatsStringRemoved
Often used in addition totoString()
to print out states: details why entries were removed.
-