Package org.h2.util
Class CacheTQ
- java.lang.Object
-
- org.h2.util.CacheTQ
-
- All Implemented Interfaces:
Cache
public class CacheTQ extends java.lang.Object implements Cache
An alternative cache implementation. This implementation uses two caches: a LRU cache and a FIFO cache. Entries are first kept in the FIFO cache, and if referenced again then marked in a hash set. If referenced again, they are moved to the LRU cache. Stream pages are never added to the LRU cache. It is supposed to be more or less scan resistant, and it doesn't cache large rows in the LRU cache.
-
-
Field Summary
Fields Modifier and Type Field Description private Cache
fifo
private int
lastUsed
private Cache
lru
private int
maxMemory
private SmallLRUCache<java.lang.Integer,java.lang.Object>
recentlyUsed
(package private) static java.lang.String
TYPE_NAME
-
Constructor Summary
Constructors Constructor Description CacheTQ(CacheWriter writer, int maxMemoryKb)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
Clear the cache.CacheObject
find(int pos)
Get an element from the cache if it is available.CacheObject
get(int pos)
Get an element in the cache if it is available.java.util.ArrayList<CacheObject>
getAllChanged()
Get all objects in the cache that have been changed.int
getMaxMemory()
Get the maximum memory to be used.int
getMemory()
Get the used size in KB.void
put(CacheObject r)
Add an element to the cache.boolean
remove(int pos)
Remove an object from the cache.void
setMaxMemory(int maxMemoryKb)
Set the maximum memory to be used by this cache.CacheObject
update(int pos, CacheObject record)
Update an element in the cache.
-
-
-
Field Detail
-
TYPE_NAME
static final java.lang.String TYPE_NAME
- See Also:
- Constant Field Values
-
lru
private final Cache lru
-
fifo
private final Cache fifo
-
recentlyUsed
private final SmallLRUCache<java.lang.Integer,java.lang.Object> recentlyUsed
-
lastUsed
private int lastUsed
-
maxMemory
private int maxMemory
-
-
Constructor Detail
-
CacheTQ
CacheTQ(CacheWriter writer, int maxMemoryKb)
-
-
Method Detail
-
clear
public void clear()
Description copied from interface:Cache
Clear the cache.
-
find
public CacheObject find(int pos)
Description copied from interface:Cache
Get an element from the cache if it is available. This will not move the item to the front of the list.
-
get
public CacheObject get(int pos)
Description copied from interface:Cache
Get an element in the cache if it is available. This will move the item to the front of the list.
-
getAllChanged
public java.util.ArrayList<CacheObject> getAllChanged()
Description copied from interface:Cache
Get all objects in the cache that have been changed.- Specified by:
getAllChanged
in interfaceCache
- Returns:
- the list of objects
-
getMaxMemory
public int getMaxMemory()
Description copied from interface:Cache
Get the maximum memory to be used.- Specified by:
getMaxMemory
in interfaceCache
- Returns:
- the maximum size in KB
-
getMemory
public int getMemory()
Description copied from interface:Cache
Get the used size in KB.
-
put
public void put(CacheObject r)
Description copied from interface:Cache
Add an element to the cache. Other items may fall out of the cache because of this. It is not allowed to add the same record twice.
-
remove
public boolean remove(int pos)
Description copied from interface:Cache
Remove an object from the cache.
-
setMaxMemory
public void setMaxMemory(int maxMemoryKb)
Description copied from interface:Cache
Set the maximum memory to be used by this cache.- Specified by:
setMaxMemory
in interfaceCache
- Parameters:
maxMemoryKb
- the maximum size in KB
-
update
public CacheObject update(int pos, CacheObject record)
Description copied from interface:Cache
Update an element in the cache. This will move the item to the front of the list.
-
-