Class DirectBufferCache

java.lang.Object
io.undertow.server.handlers.cache.DirectBufferCache

public class DirectBufferCache extends Object
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
  • Field Details

    • MAX_AGE_NO_CACHING

      public static final int MAX_AGE_NO_CACHING
      Max age 0, indicating that entries expire upon creation and are not retained;
      See Also:
    • MAX_AGE_NO_EXPIRY

      public static final int MAX_AGE_NO_EXPIRY
      Mage age -1, entries dont expire
      See Also:
  • 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