Error-free garbage collection traces
- 1 June 2002
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGMETRICS Performance Evaluation Review
- Vol. 30 (1), 140-151
- https://doi.org/10.1145/511399.511352
Abstract
Programmers are writing a large and rapidly growing number of programs in object-oriented languages such as Java that require garbage collection (GC). To explore the design and evaluation of GC algorithms quickly, researchers are using simulation based on traces of object allocation and lifetime behavior. The brute force method generates perfect traces using a whole-heap GC at every potential GC point in the program. Because this process is prohibitively expensive, researchers often use granulated traces by collecting only periodically, e.g., every 32K bytes of allocation.We extend the state of the art for simulating GC algorithms in two ways. First, we present a systematic methodology and results on the effects of trace granularity for a variety of copying GC algorithms. We show that trace granularity often distorts GC performance results compared with perfect traces, and that some GC algorithms are more sensitive to this effect than others. Second, we introduce and measure the performance of a new precise algorithm for generating GC traces which is over 800 times faster than the brute force method. Our algorithm, called Merlin, frequently timestamps objects and later uses the timestamps of dead objects to reconstruct precisely when they died. It performs only periodic garbage collections and achieves high accuracy at low cost, eliminating any reason to use granulated traces.Keywords
This publication has 14 references indexed in Scilit:
- Pretenuring for JavaPublished by Association for Computing Machinery (ACM) ,2001
- On models for object lifetime distributionsPublished by Association for Computing Machinery (ACM) ,2000
- Designing a trace format for heap allocation eventsPublished by Association for Computing Machinery (ACM) ,2000
- On effectiveness of GC in JavaPublished by Association for Computing Machinery (ACM) ,2000
- Implementing jalapeño in JavaPublished by Association for Computing Machinery (ACM) ,1999
- Generational stack collection and profile-driven pretenuringPublished by Association for Computing Machinery (ACM) ,1998
- An adaptive tenuring policy for generation scavengersACM Transactions on Programming Languages and Systems, 1992
- Simple generational garbage collection and fast allocationSoftware: Practice and Experience, 1989
- Letters to the editorCommunications of the ACM, 1963
- A method for overlapping and erasure of listsCommunications of the ACM, 1960