Abstract
There are many algorithms for concurrent garbage collection, but they are complex to describe, verify, and implement. This has resulted in a poor understanding of the relationships between the algorithms, and has precluded systematic study and comparative evaluation. We present a single high-level, abstract concurrent garbage collection algorithm, and show how existing snapshot and incremental update collectors, can be derived from the abstract algorithm by reducing precision. We also derive a new hybrid algorithm that reduces floating garbage while terminating quickly. We have implemented a concurrent collector framework and the resulting algorithms in IBM’s J9 Java virtual machine product and compared their performance in terms of space, time, and incrementality. The results show that incremental update algorithms sometimes reduce memory requirements (on 3 of 5 benchmarks) but they also sometimes take longer due to recomputation in the termination phase (on 4 of 5 benchmarks). Our new hybrid algorithm has memory requirements similar to the incremental update collectors while avoiding recomputation in the termination phase.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
Appel, A.W., Ellis, J.R., Li, K.: Real-time concurrent collection on stock multiprocessors. In: Proceedings of the SIGPLAN’88 Conference on Programming Language Design and Implementation, Atlanta, Georgia, June 1988. SIGPLAN Notices, vol. 23(7), pp. 11–20 (1988)
Azatchi, H., Levanoni, Y., Paz, H., Petrank, E.: An on-the-fly mark and sweep garbage collector based on sliding views. In: Proceedings of the 18th ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, October 2003, pp. 269–281. ACM Press, New York (2003)
Bacon, D.F., Attanasio, C.R., Lee, H.B., Rajan, V.T., Smith, S.: Java without the coffee breaks: A nonintrusive multiprocessor garbage collector. In: Proc. of the SIGPLAN Conference on Programming Language Design and Implementation, Snowbird, Utah, June 2001. SIGPLAN Notices, Vol. 36(5), pp. 92–103 (2001)
Bacon, D.F., Cheng, P., Rajan, V.T.: A real-time garbage collector with low overhead and consistent utilization. In: Proceedings of the 30th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New Orleans, Louisiana, Jan 2003. SIGPLAN Notices, vol. 38(1), pp. 285–298 (2003)
Bacon, D.F., Cheng, P., Rajan, V.T.: A unified theory of garbage collection. In: Proceedings of the ACM Conference on Object-Oriented Systems, Languages, and Applications, Vancouver, British Columbia, October 2004, pp. 50–68 (2004)
Baker, H.G.: List processing in real-time on a serial computer. Commun. ACM 21(4), 280–294 (1978)
Baker, H.G.: The Treadmill, real-time garbage collection without motion sickness. SIGPLAN Notices 27(3), 66–70 (1992)
Barth, J.M.: Shifting garbage collection overhead to compile time. Commun. ACM 20(7 ), 513–518 (1977)
Ben-Ari, M.: Algorithms for on-the-fly garbage collection. ACM Trans. Program. Lang. Syst. 6(3), 333–344 (1984)
Boehm, H.-J., Demers, A.J., Shenker, S.: Mostly parallel garbage collection. In: PLDI ’91: Proceedings of the ACM SIGPLAN 1991 conference on Programming language design and implementation, pp. 157–164. ACM Press, New York (1991)
Brooks, R.A.: Trading data space for reduced time and code space in real-time garbage collection on stock hardware. In: Steele, G.L. (ed.) Conference Record of the 1984 ACM Symposium on Lisp and Functional Programming, Austin, Texas, August 1984, pp. 256–262 (1984)
Cheadle, A.M., Field, A.J., Marlow, S., Peyton Jones, S.L., While, R.L.: Non-stop Haskell. In: Proc. of the Fifth International Conference on Functional Programming, Montreal, Quebec, September 2000. SIGPLAN Notices, vol. 35(9), pp. 257–267 (2000)
Cheng, P., Blelloch, G.E.: A parallel, real-time garbage collector. In: Proceedings of the ACM SIGPLAN 2001 conference on Programming language design and implementation, June 2001, pp. 125–136. ACM Press, New York (2001)
Dijkstra, E.W., Lamport, L., Martin, A.J., Scholten, C.S., Steffens, E.F.M.: On-the-fly garbage collection: an exercise in cooperation. Commun. ACM 21(11), 966–975 (1978)
Domani, T., Kolodner, E.K., Lewis, E., Salant, E.E., Barabash, K., Lahan, I., Levanoni, Y., Petrank, E., Yanorer, I.: Implementing an on-the-fly garbage collector for java. In: Proceedings of the second international symposium on Memory management, October 2000, pp. 155–166. ACM Press, New York (2000)
Domani, T., Kolodner, E.K., Petrank, E.: A generational on-the-fly garbage collector for Java. In: Proc. of the SIGPLAN Conference on Programming Language Design and Implementation, June 2000. SIGPLAN Notices, vol. 35(6), pp. 274–284 (2000)
Henriksson, R.: Scheduling Garbage Collection in Embedded Systems. PhD thesis, Lund Institute of Technology (July 1998)
Hudson, R.L., Moss, E.B.: Incremental garbage collection for mature objects. In: Bekkers, Y., Cohen, J. (eds.) IWMM-GIAE 1992. LNCS, vol. 637. Springer, Heidelberg (1992)
Johnstone, M.S.: Non-Compacting Memory Allocation and Real-Time Garbage Collection. PhD thesis, University of Texas at Austin (Dec. 1997)
Lamport, L.: Garbage collection with multiple processes: an exercise in parallelism. In: Proc. of the 1976 International Conference on Parallel Processing, pp. 50–54 (1976)
Larose, M., Feeley, M.: A compacting incremental collector and its performance in a production quality compiler. In: pp. 1–9., doi:10.1145/286860.286861
Levanoni, Y., Petrank, E.: An on-the-fly reference counting garbage collector for java. In: Proceedings of the 16th ACM SIGPLAN conference on Object oriented programming, systems, languages, and applications, October 2001, pp. 367–380. ACM Press, New York (2001)
Nettles, S., O’Toole, J.: Real-time garbage collection. In: Proc. of the SIGPLAN Conference on Programming Language Design and Implementation, June 1993. SIGPLAN Notices, vol. 28(6), pp. 217–226 (1993)
North, S.C., Reppy, J.H.: Concurrent garbage collection on stock hardware. In: Kahn, G. (ed.) FPCA 1987. LNCS, vol. 274, pp. 113–133. Springer, Heidelberg (1987)
Pixley, C.: An incremental garbage collection algorithm for multi-mutator systems. Distributed Computing 3(1), 41–49 (1988)
Roth, D.J., Wise, D.S.: One-bit counts between unique and sticky, pp. 49–56.
Steele, G.L.: Multiprocessing compactifying garbage collection. Commun. ACM 18(9), 495–508 (1975)
Steele, G.L.: Corrigendum: Multiprocessing compactifying garbage collection. Commun. ACM 19(6), 354 (1976)
Yuasa, T.: Real-time garbage collection on general-purpose machines. JSYSSOFT 11(3), 181–198 (1990)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2005 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Vechev, M.T., Bacon, D.F., Cheng, P., Grove, D. (2005). Derivation and Evaluation of Concurrent Collectors. In: Black, A.P. (eds) ECOOP 2005 - Object-Oriented Programming. ECOOP 2005. Lecture Notes in Computer Science, vol 3586. Springer, Berlin, Heidelberg. https://doi.org/10.1007/11531142_25
Download citation
DOI: https://doi.org/10.1007/11531142_25
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-27992-1
Online ISBN: 978-3-540-31725-8
eBook Packages: Computer ScienceComputer Science (R0)