Class DirectBufferCache
java.lang.Object
io.undertow.server.handlers.cache.DirectBufferCache
A non-blocking buffer cache where entries are indexed by a path and are made up of a
subsequence of blocks in a fixed large direct buffer. An ideal application is
a file system cache, where the path corresponds to a file location.
To reduce contention, entry allocation and eviction execute in a sampling fashion (entry hits modulo N). Eviction follows an LRU approach (oldest sampled entries are removed first) when the cache is out of capacity
In order to expedite reclamation, cache entries are reference counted as opposed to garbage collected.
- Author:
- Jason T. Greene
-
Nested Class Summary
Nested Classes -
Constructor Summary
ConstructorsConstructorDescriptionDirectBufferCache
(int sliceSize, int slicesPerPage, int maxMemory) DirectBufferCache
(int sliceSize, int slicesPerPage, int maxMemory, org.xnio.BufferAllocator<ByteBuffer> bufferAllocator) DirectBufferCache
(int sliceSize, int slicesPerPage, int maxMemory, org.xnio.BufferAllocator<ByteBuffer> bufferAllocator, int maxAge) -
Method Summary
Modifier and TypeMethodDescriptionReturns a set of all the keys in the cache.void
-
Constructor Details
-
DirectBufferCache
public DirectBufferCache(int sliceSize, int slicesPerPage, int maxMemory) -
DirectBufferCache
public DirectBufferCache(int sliceSize, int slicesPerPage, int maxMemory, org.xnio.BufferAllocator<ByteBuffer> bufferAllocator) -
DirectBufferCache
public DirectBufferCache(int sliceSize, int slicesPerPage, int maxMemory, org.xnio.BufferAllocator<ByteBuffer> bufferAllocator, int maxAge)
-
-
Method Details
-
add
-
add
-
get
-
getAllKeys
Returns a set of all the keys in the cache. This is a copy of the key set at the time of method invocation.- Returns:
- all the keys in this cache
-
remove
-