Finalcache: Eviction Based on Implicit Entry Reachability
Software caches for garbage collected systems are unaware which cache entries are referenced by a client program. Lacking this key information, software caches cannot determine the cache’s contribution to the program’s memory footprint. Furthermore, their eviction heuristics must rely on access history as a proxy for usage. Divergence between usage and access history can undermine the intention of eviction thereby resulting in problematic cache behavior. This dissertation proposes designs for a novel family of “usage-based” software cache informed of entry reachability by the automatic memory management system. Unlike extant software caches, usage-based caches can accurately determine their memory footprint because they are informed of memory usage. Usage-based software caches require information and controls that are not exposed by many garbage collected languages’ runtime systems including Java and Python. C#’s finalization interface is sufficient to construct a prototype implementation of a usage-based software cache called “FinalCache”. Unfortunately, C#’s finalization interface creates high coupling between FinalCache and its entries. We are unaware of any language runtime systems that do not have this characteristic. These deficiencies and strategies for potentially remediating them are also described.
Computer science|Information Technology|Artificial intelligence
Veliz, Adrian Edward, "Finalcache: Eviction Based on Implicit Entry Reachability" (2020). ETD Collection for University of Texas, El Paso. AAI28088819.