Assessing the limits of program-specific garbage collection performance

  title={Assessing the limits of program-specific garbage collection performance},
  author={Nicholas Jacek and Meng-Chieh Chiu and Benjamin M Marlin and Eliot Moss},
  journal={Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation},
  • Nicholas Jacek, Meng-Chieh Chiu, E. Moss
  • Published 2 June 2016
  • Computer Science
  • Proceedings of the 37th ACM SIGPLAN Conference on Programming Language Design and Implementation
We consider the ultimate limits of program-specific garbage collector performance for real programs. We first characterize the GC schedule optimization problem using Markov Decision Processes (MDPs). Based on this characterization, we develop a method of determining, for a given program run and heap size, an optimal schedule of collections for a non-generational collector. We further explore the limits of performance of a generational collector, where it is not feasible to search the space of… 

Figures and Tables from this paper

Optimal Choice of When to Garbage Collect
A linear-time dynamic programming solution that, given a program run and heap size, computes an optimal schedule of collections for a non-generational collector and extends the two-generation dynamic program to any number of generations, allowing other generalizations as well.
Learning when to garbage collect with random forests
It is demonstrated useful generalization of learned policies to unseen traces of the same program, showing this approach may be fruitful for further investigation.
Transactional Sapphire
This work describes the experience of implementing the Sapphire algorithm as the first on-the-fly, parallel, replication copying, garbage collector for the Jikes RVM Java virtual machine (JVM).
A Lightweight Formalism for Reference Lifetimes and Borrowing in Rust
This article presents a lightweight formalism that captures many aspects of Rust, including copy- and move-semantics, mutable borrowing, reborrowing, partial moves, and lifetimes, and provides a soundness proof to verify the key claims of the calculus.
One Process to Reap Them All: Garbage Collection as-a-Service
The prototype collects system-wide statistics from all running VMs, makes centralized decisions about memory management across apps and across software layers, and also collects garbage centrally, and coordinates with the power manager to tune collector scheduling.
Effective memory management for mobile environments
This dissertation studies the design of managed runtime systems for mobile platforms, deepening the understanding of interactions between garbage collection (GC) and system layers, and develops tools to monitor the memory behavior of Android-based apps and to characterize GC performance.
Optimization and Training of Generational Garbage Collectors
This research presents a novel and scalable approach called “SmartGarbageSmartCollection” that automates the very labor-intensive and therefore time-efficient and environmentally friendly process of collection and recycling ofGarbage.
Subheap-Augmented Garbage Collection


Generating object lifetime traces with Merlin
It is shown that trace granularity often distorts simulated garbage collection results compared with perfect traces, and a new algorithm called Merlin is presented, which can generate traces over two orders of magnitude faster than the brute-force method which collects after every object allocation.
Space overhead bounds for dynamic memory management with partial compaction
This paper studies the effectiveness of partial compaction and provides the first rigorous lower and upper bounds on its effectiveness in reducing fragmentation at a low cost.
The space cost of lazy reference counting
If each reference count operation is constrained to take constant time, then the overall space requirements can be increased by a factor of Ω(R) in the worst case, where R is the ratio between the size of the largest and smallest allocated object.
The DaCapo benchmarks: java benchmarking development and analysis
This paper recommends benchmarking selection and evaluation methodologies, and introduces the DaCapo benchmarks, a set of open source, client-side Java benchmarks that improve over SPEC Java in a variety of ways, including more complex code, richer object behaviors, and more demanding memory system requirements.
Bounds for Some Functions Concerning Dynamic Storage Allocation
The amount of store necessary to operate a dynamic storage allocation system, subject to certain constraints, with no risk of breakdown due to storage fragmentation, is considered. Upper and lower
Elephant tracks: portable production of complete and precise gc traces
Elephant Tracks (ET) is a dynamic program analysis tool for Java that produces detailed traces of garbage collection-related events, including object allocations, object deaths, and pointer updates, based on the Merlin algorithm.
Wake up and smell the coffee: evaluation methodology for the 21st century
The consequences of the authors' collective inattention to methodology on innovation are explored, recommendations for addressing this problem in one domain are made, and guidelines for other domains are provided.
Elephant Tracks: generating program traces with object death records
We introduce Elephant Tracks (ET), a dynamic program analysis tool for producing traces of garbage collection events, including object allocations, object deaths, and pointer updates. Like prior
An Estimate of the Store Size Necessary for Dynamic Storage Allocation
It is proved that for any strategy the amount of store needed is bounded below by a function which rises logarithmically with the size of blocks used.
Dynamic Programming and Optimal Control
The leading and most up-to-date textbook on the far-ranging algorithmic methododogy of Dynamic Programming, which can be used for optimal control, Markovian decision problems, planning and sequential