Lru Memory Cache
open class LruMemoryCache<K, V> @JvmOverloads constructor(val capacity: Long, lowWater: Long = (capacity * 0.75).toLong())
LRU cache using an intrusive doubly-linked list for O(1) eviction. The list head is the most recently used entry, the tail is the least recently used; eviction walks tail→head until the cache drops below lowWater and has room for the requested allocation. trimToAge uses the same tail walk and stops at the first entry whose Entry.lastUsed crosses the threshold.