A parallel, real-time garbage collector
- 1 May 2001
- journal article
- Published by Association for Computing Machinery (ACM) in ACM SIGPLAN Notices
- Vol. 36 (5) , 125-136
- https://doi.org/10.1145/381694.378823
Abstract
We describe a parallel, real-time garbage collector and present experimental results that demonstrate good scalability and good real-time bounds. The collector is designed for shared-memory multiprocessors and is based on an earlier collector algorithm [2], which provided fixed bounds on the time any thread must pause for collection. However, since our earlier algorithm was designed for simple analysis, it had some impractical features. This paper presents the extensions necessary for a practical implementation: reducing excessive interleaving, handling stacks and global variables, reducing double allocation, and special treatment of large and small objects. An implementation based on the modified algorithm is evaluated on a set of 15 SML benchmarks on a Sun Enterprise 10000, a 64-way UltraSparc-II multiprocessor. To the best of our knowledge, this is the first implementation of a parallel, real-time garbage collector.The average collector speedup is 7.5 at 8 processors and 17.7 at 32 processors. Maximum pause times range from 3 ms to 5 ms. In contrast, a non-incremental collector (whether generational or not) has maximum pause times from 10 ms to 650 ms. Compared to a non-parallel, stop-copy collector, parallelism has a 39% overhead, while real-time behavior adds an additional 12% overhead. Since the collector takes about 15% of total execution time, these features have an overall time costs of 6% and 2%.Keywords
This publication has 19 references indexed in Scilit:
- Room synchronizationsPublished by Association for Computing Machinery (ACM) ,2001
- A generational on-the-fly garbage collector for JavaPublished by Association for Computing Machinery (ACM) ,2000
- On bounding time and space for multiprocessor garbage collectionPublished by Association for Computing Machinery (ACM) ,1999
- Generational stack collection and profile-driven pretenuringPublished by Association for Computing Machinery (ACM) ,1998
- Portable, unobtrusive garbage collection for multiprocessor systemsPublished by Association for Computing Machinery (ACM) ,1994
- A concurrent, generational garbage collector for a multithreaded implementation of MLPublished by Association for Computing Machinery (ACM) ,1993
- Garbage collection in object oriented systemsPublished by Association for Computing Machinery (ACM) ,1991
- On-the-fly garbage collectionCommunications of the ACM, 1978
- List processing in real time on a serial computerCommunications of the ACM, 1978
- A nonrecursive list compacting algorithmCommunications of the ACM, 1970