Abstract
Root scanning is the task of identifying references to heap objects that are stored outside of the heap itself, in global and local variables and on the execution stack. Root scanning is particularly difficult within an incremental garbage collector that needs to be deterministic or give hard realtime guarantees. Here, a method that allows exact root scanning is presented. The basic idea is to ensure that copies of all root references exist on the heap whenever the garbage collector might become active. This approach reduces the root scanning phase of the garbage collection cycle to an efficient constant-time operation. AJava virtual machine and a static Java bytecode compiler that use this technique have been implemented and analysed using the SPECjvm98 benchmark suite. This Java implementation allows for deterministic memory management as needed in real-time systems that is difficult to achieve with traditional methods to perform root scanning.
Chapter PDF
Similar content being viewed by others
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
References
Ken Arnold and James Gosling: The Java Programming Language, 2nd edition, Addison Wesley, 1998
J-Consortium: Real Time Core Extension for the Java Platform, Draft International JConsortium Specification, V1.0.14, September 2, 2000
The Real-Time Java Experts Group: Real Time Specification for Java, Addison-Wesley, 2000, http://www.rtj.org
Edsgar W. Dijkstra, L. Lamport, A. Martin, C. Scholten and E. Steffens: On-the-fly Garbage Collection: An Exercise in Cooperation, Communications of the ACM, 21,11 (November 1978), p. 966–975
Henry G. Baker: List processing in Real Time on a Serial Computer. Communications of the ACM 21,4 (April 1978), p. 280–294, ftp://ftp.netcom.com/pub/hb/hbaker/RealTimeGC.html
Damien Doligez and Georges Gonthier: Portable, Unobtrusive Garbage Collection for Multiprocessor Systems, POPL, 1994
Danny Dubé, Marc Feeley and Manuel Serrano: Un GC temps r.el semi-compactant, Journées Francophones des Langages Applicatifs, JFLA, Janvier 1996
Joel F. Barlett: Compacting Garbage Collection with Ambiguous Roots, Digital Equipment Corporation, 1988
Hans-Juergen Boehm: Garbage Collection in an Uncooperative Environment, Software Practice & Experience, Vol 18 (9), p. 807–820, September 1988
Hans-Juergen Boehm: Space Efficient Conservative Garbage Collection, PLDI, 1993
Benjamin Goldberg: Tag-Free Garbage Collection for Strongly Typed Programming Languages, PLDI, 1991
A. W. Appel: Runtime Tags Aren’t Necessary, Lisp and Symbolic Computation, 2, p. 153–162, 1989
Amer Diwan, Eliot Moss and Richard Hudson: Compiler Support for Garbage Collection in a Statically Typed Language, PLDI, 1992
Ole Agesen, David Detlefs, J. Eliot and B. Moss: Garbage Collection and Local Variable Type-Precision and Liveness in Java™ Virtual Machines, PLDI, 1998
James Stichnoth, Guei-Yuan Lueh and Michal Cierniak: Support for Garbage Collection at Every Instruction in A Java™ Compiler, PLDI, 1999
Donald E. Knuth: The Art of Computer Programming, Volume 1, 1973
Thomas W. Christopher: Reference Count Garbage Collection, Software Practice & Experience, Vol 14(6), p. 503–507, June 1984
Fridtjof Siebert: Real-Time Garbage Collection in Multi-Threaded Systems on a Single Processor, Real-Time Systems Symposium (RTSS’99), Phoenix, 1999
Ole Agesen: GC points in a Threaded Environment, Sun Labs Tech report 70, 1998
Fridtjof Siebert: Hard Real-Time Garbage Collection in the Jamaica Virtual Machine, Real-Time Computing Systems and Applications (RTCSA’99), Hong Kong, 1999
Fridtjof Siebert: Eliminating External Fragmentation in a Non-Moving Garbage Collector for Java, Compilers, Architectures and Synthesis for Embedded Systems (CASES), San Jose, 2000
Fridtjof Siebert: Guaranteeing Non-Fisruptiveness and Teal-Time Deadlines in an Incremental Garbage Collector (corrected version), International Symposium on Memory Management (ISMM’98), Vancouver, 1998, corrected version available at http://www.fridi.de
M. Weiss, F. de Ferrière, B. Delsart, C. Fabre, F. Hirsch, E. A. Johnson, V. Joloboff, F. Roy, F. Siebert, and X. Spengler: TurboJ, a Bytecode-to-Native Compiler, Languages, Compilers, and Tools for Embedded Systems (LCTES’98), Montreal, in Lecture Notes in Computer Science 1474, Springer, June 1998
Pekka P. Pirinen: Barrier techniques for incremental tracing, International Symposium on Memory Management (ISMM’98), Vancouver, 1998
Paul R. Wilson and Thomas G. Moher: A card-marking scheme for controlling intergenerational references in generation-based GC on stock hardware, SIGPLAN Notices 24 (5), p. 87–92, 1989
Urs Hölzle: A Fast Write Barrier for Generational Garbage Collectors, OOPSLA, 1993
SPECjvm98 benchmarks suite, V1.03, Standard Performance Evaluation Corporation, July 30, 1998
Java Development Kit 1.1.8, 1.2 and 1.2.2, SUN Microsystems Inc., 1998–2000
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Siebert, F. (2001). Constant-Time Root Scanning for Deterministic Garbage Collection. In: Wilhelm, R. (eds) Compiler Construction. CC 2001. Lecture Notes in Computer Science, vol 2027. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45306-7_21
Download citation
DOI: https://doi.org/10.1007/3-540-45306-7_21
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-41861-0
Online ISBN: 978-3-540-45306-2
eBook Packages: Springer Book Archive