Prioritized Garbage Collection: Explicit GC Support for Software Caches
Programmers routinely trade space for time to increase performance, often in the
form of caching or memoization. In managed languages like Java or JavaScript,
however, this space-time tradeoff is complex. Using more space translates into
higher garbage collection costs, especially at the limit of available
memory. Existing runtime systems provide limited support for
space-sensitive algorithms, forcing programmers into difficult and often brittle
choices about provisioning.
This paper presents \emph{prioritized garbage collection}, a cooperative
programming language and runtime solution to this problem. Prioritized GC
provides an interface similar to soft references, called \emph{priority
references}, which identify objects that the collector can reclaim eagerly if
necessary. The key difference is an API for defining the policy that governs
when priority references are cleared and in what order. Application code
specifies a priority value for each reference and a target memory bound. The
collector reclaims references, lowest priority first, until the total memory
footprint of the cache fits within the bound. We use this API to implement a
space-aware least-recently-used (LRU) cache, called a \emph{Sache}, that is a
drop-in replacement for existing caches, such as Google's Guava library. The
garbage collector automatically grows and shrinks the Sache in response to
available memory and workload with minimal provisioning information from the
programmer. Using a Sache, it is almost impossible for an application to
experience a memory leak, memory pressure, or an out-of-memory crash caused by
software caching.
Thu 3 NovDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
13:30 - 15:10 | |||
13:30 25mTalk | Efficient and Thread-Safe Objects for Dynamically-Typed Languages OOPSLA Benoit Daloze JKU Linz, Austria, Stefan Marr Johannes Kepler University Linz, Daniele Bonetta Oracle Labs, Hanspeter Mössenböck JKU Linz, Austria DOI Pre-print Media Attached | ||
13:55 25mTalk | Hybrid STM/HTM for Nested Transactions on OpenJDK OOPSLA Keith Chapman Purdue University, Tony Hosking Australian National University, Data61, and Purdue University, Eliot Moss University of Massachusetts Amherst Link to publication DOI Pre-print Media Attached | ||
14:20 25mTalk | Makalu: Fast Recoverable Allocation of Non-volatile Memory OOPSLA DOI Pre-print Media Attached | ||
14:45 25mTalk | Prioritized Garbage Collection: Explicit GC Support for Software Caches OOPSLA Diogenes Nunez Tufts University, Sam Guyer Tufts University, Emery D. Berger University of Massachusetts, Amherst DOI Pre-print Media Attached |