Package org.apache.jackrabbit.core.cache
Class AbstractCache
- java.lang.Object
-
- org.apache.jackrabbit.core.cache.AbstractCache
-
- All Implemented Interfaces:
Cache
- Direct Known Subclasses:
ConcurrentCache
public abstract class AbstractCache extends Object implements Cache
Abstract base class for managedCache
s. This class uses atomic variables to track the current and maximum size of the cache, the cache access count and a possibleCacheAccessListener
instance.A subclass should call the protected
recordCacheAccess()
method whenever the cache is accessed (even cache misses should be reported). The subclass should also use therecordSizeChange(long)
method to record all changes in the cache size, and automatically evict excess items when theisTooBig()
method returnstrue
.
-
-
Constructor Summary
Constructors Constructor Description AbstractCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
dispose()
long
getAccessCount()
Get the number of accesses (get or set) until resetAccessCount was called.String
getCacheInfoAsString()
Gathers the stats of the cache for logging.long
getMaxMemorySize()
Get the current limit.long
getMemoryUsed()
Get the amount of used memory.long
getMissCount()
Get the number of cache misses.long
getTotalAccessCount()
Get the total number of cache accesses.protected boolean
isTooBig()
Checks whether the current estimate of the amount of memory used by this cache exceeds the allocated maximum amount of memory.protected void
recordCacheAccess()
Records a single cache access and calls the configuredCacheAccessListener
(if any) whenever the constant access interval has passed since the previous listener call.protected void
recordCacheMiss()
protected void
recordSizeChange(long delta)
Updates the current memory use estimate of this cache.void
resetAccessCount()
Reset the access counter.void
resetMissCount()
Reset the cache miss counter.void
setAccessListener(CacheAccessListener listener)
Set the cache access listener.void
setMaxMemorySize(long size)
Set the new memory limit.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.apache.jackrabbit.core.cache.Cache
getElementCount
-
-
-
-
Method Detail
-
isTooBig
protected boolean isTooBig()
Checks whether the current estimate of the amount of memory used by this cache exceeds the allocated maximum amount of memory.- Returns:
true
if the cache size is too big,false
otherwise
-
recordSizeChange
protected void recordSizeChange(long delta)
Updates the current memory use estimate of this cache.- Parameters:
delta
- number of bytes added or removed
-
recordCacheAccess
protected void recordCacheAccess()
Records a single cache access and calls the configuredCacheAccessListener
(if any) whenever the constant access interval has passed since the previous listener call.
-
recordCacheMiss
protected void recordCacheMiss()
-
getAccessCount
public long getAccessCount()
Description copied from interface:Cache
Get the number of accesses (get or set) until resetAccessCount was called.- Specified by:
getAccessCount
in interfaceCache
- Returns:
- the count
-
resetAccessCount
public void resetAccessCount()
Description copied from interface:Cache
Reset the access counter.- Specified by:
resetAccessCount
in interfaceCache
-
getTotalAccessCount
public long getTotalAccessCount()
Description copied from interface:Cache
Get the total number of cache accesses.- Specified by:
getTotalAccessCount
in interfaceCache
- Returns:
- the number of hits
-
getMissCount
public long getMissCount()
Description copied from interface:Cache
Get the number of cache misses.- Specified by:
getMissCount
in interfaceCache
- Returns:
- the number of misses
-
resetMissCount
public void resetMissCount()
Description copied from interface:Cache
Reset the cache miss counter.- Specified by:
resetMissCount
in interfaceCache
-
getMemoryUsed
public long getMemoryUsed()
Description copied from interface:Cache
Get the amount of used memory.- Specified by:
getMemoryUsed
in interfaceCache
- Returns:
- the size in bytes
-
getMaxMemorySize
public long getMaxMemorySize()
Description copied from interface:Cache
Get the current limit.- Specified by:
getMaxMemorySize
in interfaceCache
- Returns:
- the size in bytes
-
setMaxMemorySize
public void setMaxMemorySize(long size)
Description copied from interface:Cache
Set the new memory limit.- Specified by:
setMaxMemorySize
in interfaceCache
- Parameters:
size
- the size in bytes
-
setAccessListener
public void setAccessListener(CacheAccessListener listener)
Set the cache access listener. Only one listener per cache is supported.- Specified by:
setAccessListener
in interfaceCache
- Parameters:
listener
- the new listener
-
dispose
public void dispose()
-
getCacheInfoAsString
public String getCacheInfoAsString()
Gathers the stats of the cache for logging.- Specified by:
getCacheInfoAsString
in interfaceCache
-
-