Abstract
Current garbage collectors leave much heap-allocated data uncollected because they preserve data reachable from a root set. However, only live data - a subset of reachable data - need be preserved. Using a first-order functional language we formulate a context-sensitive liveness analysis for structured data and prove it correct. We then use a 0-CFA-like conservative approximation to annotate each allocation and function-call program point with a finite-state automaton-which the garbage collector inspects to curtail reachability during marking. As a result, fewer objects are marked (albeit with a more expensive marker) and then preserved (e.g. by a copy phase). Experiments confirm the expected performance benefits-increase in garbage reclaimed and a consequent decrease in the number of collections, a decrease in the memory size required to run programs, and reduced overall garbage collection time for a majority of programs. © 2014 Springer-Verlag.
Cite
CITATION STYLE
Asati, R., Sanyal, A., Karkare, A., & Mycroft, A. (2014). Liveness-based garbage collection. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 8409 LNCS, pp. 85–106). Springer Verlag. https://doi.org/10.1007/978-3-642-54807-9_5
Register to see more suggestions
Mendeley helps you to discover research relevant for your work.