org.hibernate.util
public class: SoftLimitMRUCache [javadoc |
source]
java.lang.Object
org.hibernate.util.SoftLimitMRUCache
All Implemented Interfaces:
Serializable
Cache following a "Most Recently Used" (MRY) algorithm for maintaining a
bounded in-memory size; the "Least Recently Used" (LRU) entry is the first
available for removal from the cache.
This implementation uses a "soft limit" to the in-memory size of the cache,
meaning that all cache entries are kept within a completely
java.lang.ref.SoftReference -based map with the most recently utilized
entries additionally kept in a hard-reference manner to prevent those cache
entries soft references from becoming enqueued by the garbage collector.
Thus the actual size of this cache impl can actually grow beyond the stated
max size bound as long as GC is not actively seeking soft references for
enqueuement.
| Field Summary |
|---|
| public static final int | DEFAULT_STRONG_REF_COUNT | |
| Method from org.hibernate.util.SoftLimitMRUCache Detail: |
public synchronized void clear() {
strongReferenceCache.clear();
softReferenceCache.clear();
}
|
public synchronized Object get(Object key) {
Object result = softReferenceCache.get( key );
if ( result != null ) {
strongReferenceCache.put( key, result );
}
return result;
}
|
public synchronized Object put(Object key,
Object value) {
softReferenceCache.put( key, value );
return strongReferenceCache.put( key, value );
}
|
public synchronized int size() {
return strongReferenceCache.size();
}
|
public synchronized int softSize() {
return softReferenceCache.size();
}
|