Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
10.1145/1375581.1375586acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
research-article

Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance

Published: 07 June 2008 Publication History

Abstract

Programmers are increasingly choosing managed languages for modern applications, which tend to allocate many short-to-medium lived small objects. The garbage collector therefore directly determines program performance by making a classic space-time tradeoff that seeks to provide space efficiency, fast reclamation, and mutator performance. The three canonical tracing garbage collectors: semi-space, mark-sweep, and mark-compact each sacrifice one objective. This paper describes a collector family, called mark-region, and introduces opportunistic defragmentation, which mixes copying and marking in a single pass. Combining both, we implement immix, a novel high performance garbage collector that achieves all three performance objectives. The key insight is to allocate and reclaim memory in contiguous regions, at a coarse block grain when possible and otherwise in groups of finer grain lines. We show that immix outperforms existing canonical algorithms, improving total application performance by 7 to 25% on average across 20 benchmarks. As the mature space in a generational collector, immix matches or beats a highly tuned generational collector, e.g. it improves jbb2000 by 5%. These innovations and the identification of a new family of collectors open new opportunities for garbage collector design.

References

[1]
D. Abuaiadh, Y. Ossia, E. Petrank, and U. Silbershtein. An efficient parallel heap compaction algorithm. In ACM Conference on Object?Oriented Programming, Systems, Languages, and Applications, pages 224--236, Vancouver, BC, Canada, 2004. ACM.
[2]
B. Alpern, D. Attanasio, J. J. Barton, M. G. Burke, P.Cheng, J.-D. Choi, A. Cocchi, S. J. Fink, D. Grove, M. Hind, S. F. Hummel, D. Lieber, V. Litvinov, M. Mergen, T. Ngo, J. R. Russell, V. Sarkar, M. J. Serrano, J. Shepherd, S. Smith, V. C. Sreedhar, H. Srinivasan, and J. Whaley. The Jalapeño virtual machine. IBM System Journal, 39(1), Feb. 2000.
[3]
B. Alpern, D. Attanasio, J. J. Barton, A. Cocchi, S. F. Hummel, D. Lieber, M. Mergen, T. Ngo, J. Shepherd, and S. Smith. Implementing Jalapeño in Java. In ACM Conference on Object?Oriented Programming, Systems, Languages, and Applications, Denver, CO, Nov. 1999.
[4]
A. W. Appel. Simple generational garbage collection and fast allocation. Software Practice and Experience, 19(2):171--183, 1989.
[5]
M. Arnold, S. J. Fink, D. Grove, M. Hind, and P. Sweeney. Adaptive optimization in the Jalape?no JVM. In ACM Conference on Object?Oriented Programming, Systems, Languages, and Applications, pages 47--65, Minneapolis, MN, October 2000.
[6]
C. Attanasio, D. Bacon, A. Cocchi, and S. Smith. A comparative evaluation of parallel garbage collectors. In Proceedings of the Workshop on Languages and Compilers for Parallel Computing, Cumberland Falls, KY, Aug. 2001.
[7]
D. F. Bacon, P. Cheng, and V. T. Rajan. Controlling fragmentation and space consumption in the Metronome a real-time garbage collector for Java. In ACM Conference on Languages, Compilers, and Tools for Embedded Systems, pages 81--92, San Diego, CA, June 2003.
[8]
D. F. Bacon, P. Cheng, and V. T. Rajan. A real-time garbage collector with low overhead and consistent utilization. In ACM Symposium on the Principles of Programming Languages, pages 285--294, New Orleans, LA, Jan. 2003.
[9]
H. G. Baker. List processing in real-time on a serial computer. Communications of the ACM, 21(4):280--94, 1978.
[10]
K. Barabash, O. Ben-Yitzhak, I. Goft, E. K. Kolodner, V. Leikehman, Y. Ossia, A. Owshanko, and E. Petrank. A parallel, incremental, mostly concurrent garbage collector for servers. ACM Transactions on Programming Languages and Systems, 27(6):1097--1146, 2005.
[11]
BEA Systems Inc. Using the JRockit runtime analyzer. http://edocs.bea.com/wljrockit/docs142/usingJRA/looking.html, 2007.
[12]
S. M. Blackburn, P. Cheng, and K. S. McKinley. Myths and realities: The performance impact of garbage collection. In Proceedings of the ACM Conference on Measurement & Modeling Computer Systems, pages 25--36, NY, NY, June 2004.
[13]
S. M. Blackburn, P. Cheng, and K. S. McKinley. Oil and water? High performance garbage collection in Java with MMTk. In Proceedings of the 26th International Conference on Software Engineering, pages 137--146, Scotland, UK, May 2004.
[14]
S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo benchmarks: Java benchmarking development and analysis. In ACM Conference on Object?Oriented Programming, Systems, Languages, and Applications, pages 169--190, Portland, OR, USA, Oct. 2006.
[15]
S. M. Blackburn, R. Garner, C. Hoffman, A. M. Khan, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo Benchmarks: Java benchmarking development and analysis (extended version). Technical Report TR-CS-06-01, Dept. of Computer Science, Australian National University, 2006. http://www.dacapobench.org.
[16]
S. M. Blackburn and A. Hosking. Barriers: Friend or foe? In The ACM International Symposium on Memory Management, pages 143--151, Vancouver, BC, Canada, Oct. 2004.
[17]
S. M. Blackburn, R. E. Jones, K. S. McKinley, and J. E. B. Moss. Beltway: Getting around garbage collection gridlock. In ACM Conference on Programming Language Design and Implementation, pages 153--164, Berlin, Germany, June 2002.
[18]
S. Borman. Sensible sanitation ? understanding the IBM Java garbage collector. http://www.ibm.com/developerworks/ibm/library/i-garbage1/, Aug. 2002.
[19]
C. J. Cheney. A nonrecursive list compacting algorithm. Communications of the ACM, 13(11):677--678, Nov. 1970.
[20]
J. Cohen and A. Nicolau. Comparison of compacting algorithms for garbage collection. ACM Transactions on Programming Languages and Systems, 5(4):532--553, Oct. 1983.
[21]
A. Demmers, M. Weiser, B. Hayes, H. Boehm, D. Bobrow, and S. Shenker. Combining generational and conservative garbage collection: framework and implementations. In ACM Symposium on the Principles of Programming Languages, pages 261--269, San Francisco, California, United States, 1990. ACM.
[22]
D. Detlefs, C. Flood, S. Heller, and T. Printezis. Garbage-first garbage collection. In The ACM International Symposium on Memory Management, Vancouver, BC, Canada, Oct. 2004. ACM.
[23]
T. Domani, E. K. Kolodner, and E. Petrank. A generational on-the-fly garbage collector for java. In PLDI ?00: Proceedings of the ACM SIGPLAN 2000 conference on Programming language design and implementation, pages 274--284, Vancouver, British Columbia, Canada, 2000. ACM.
[24]
Q. Feng and E. Berger. A locality improving dynmaic memory allocator. In The ACM Workshop Memory Systems Performance, pages 68--77, Chicago, IL, June 2005.
[25]
D. Frampton, D. F. Bacon, P. Cheng, and D. Grove. Generational realtime garbage collection: A a three-part invention for young obects. In European Conference on Object-Oriented Programming, pages 101--125, Berlin, Germany, July 2007.
[26]
R. L. Hudson and J. E. B. Moss. Incremental collection of mature objects. In Proceedings of the International Workshop on Memory Management, number 637 in Lecture Notes on Computer Science, pages 388--403. Springer-Verlag, 1992.
[27]
Jikes RVMCore Team. VMperformance comparisons. http://jikesrvm.anu.edu.au/~dacapo/index.php?category=release, 2007.
[28]
H. Kermany and E. Petrank. The compressor: concurrent, incremental, and parallel compaction. In ACM Conference on Programming Language Design and Implementation, pages 354--363, Ottawa, Ontario, Canada, 2006. ACM.
[29]
D. Lea. A memory allocator. Technical report, SUNY at Oswego, 1996.
[30]
J. McCarthy. Recursive functions of symbolic expressions and their computation by machine, Part I. Commun. ACM, 3(4):184--195, 1960.
[31]
P. McGachey and A. L. Hosking. Reducing generational copy reserve overhead with fallback compaction. In The ACM International Symposium on Memory Management, pages 17--28, Ottawa, CA, June 2006.
[32]
M. Pettersson. Linux Intel/x86 performance counters, 2003. http://user.it.uu.se/~mikpe/linux/perfctr/.
[33]
N. Sachindran, J. E. B. Moss, and E. D. Berger. MC2: High-performance garbage collectionn for memory-constrained environments. In ACM Conference on Object?Oriented Programming, Systems, Languages, and Applications, pages 81--98, Vancouver, Canada, Oct. 2004.
[34]
D. Spoonhower, G. Blelloch, and R. Harper. Using page residency to balance tradeoffs in tracing garbage collection. In ACM International Conference on Virtual Execution Environments, Chicago, IL, June 2005. ACM.
[35]
Standard Performance Evaluation Corporation. SPECjbb2000 Documentation, release 1.01 edition, 2001.
[36]
D. Stefanović, K. S. McKinley, and J. E. B. Moss. Age-based garbage collection. In ACM Conference on Object?Oriented Programming, Systems, Languages, and Applications, Denver, CO, Nov. 1999.
[37]
P. Styger. LISP 2 garbage collector specifications. Technical Report TM-3417/500/00 1, System Development Cooperation, Santa Monica, CA, Apr. 1967.

Cited By

View all
  • (2024)Mark–Scavenge: Waiting for Trash to Take Itself OutProceedings of the ACM on Programming Languages10.1145/36897918:OOPSLA2(2268-2295)Online publication date: 8-Oct-2024
  • (2024)Garbage Collection for Mostly Serialized HeapsProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665512(1-14)Online publication date: 20-Jun-2024
  • (2024)Combining Machine Learning and Lifetime-Based Resource Management for Memory Allocation and BeyondCommunications of the ACM10.1145/361101867:4(87-96)Online publication date: 25-Mar-2024
  • Show More Cited By

Index Terms

  1. Immix: a mark-region garbage collector with space efficiency, fast collection, and mutator performance

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
PLDI '08: Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation
June 2008
396 pages
ISBN:9781595938602
DOI:10.1145/1375581
  • General Chair:
  • Rajiv Gupta,
  • Program Chair:
  • Saman Amarasinghe
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 43, Issue 6
    PLDI '08
    June 2008
    382 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1379022
    Issue’s Table of Contents
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 07 June 2008

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. compaction
  2. fragmentation
  3. free-list
  4. immix
  5. locality
  6. mark-region
  7. mark-sweep
  8. semi-space
  9. sweep-to-free-list
  10. sweep-to-region

Qualifiers

  • Research-article

Conference

PLDI '08
Sponsor:

Acceptance Rates

Overall Acceptance Rate 406 of 2,067 submissions, 20%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)71
  • Downloads (Last 6 weeks)8
Reflects downloads up to 05 Feb 2025

Other Metrics

Citations

Cited By

View all
  • (2024)Mark–Scavenge: Waiting for Trash to Take Itself OutProceedings of the ACM on Programming Languages10.1145/36897918:OOPSLA2(2268-2295)Online publication date: 8-Oct-2024
  • (2024)Garbage Collection for Mostly Serialized HeapsProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665512(1-14)Online publication date: 20-Jun-2024
  • (2024)Combining Machine Learning and Lifetime-Based Resource Management for Memory Allocation and BeyondCommunications of the ACM10.1145/361101867:4(87-96)Online publication date: 25-Mar-2024
  • (2023)Improving Garbage Collection Observability with Performance TracingProceedings of the 20th ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3617651.3622986(85-99)Online publication date: 19-Oct-2023
  • (2022)Better Understanding the Costs and Benefits of Automatic Memory ManagementProceedings of the 19th International Conference on Managed Programming Languages and Runtimes10.1145/3546918.3546926(29-44)Online publication date: 14-Sep-2022
  • (2022)Low-latency, high-throughput garbage collectionProceedings of the 43rd ACM SIGPLAN International Conference on Programming Language Design and Implementation10.1145/3519939.3523440(76-91)Online publication date: 9-Jun-2022
  • (2022)Securing Sensitive Data in Java Virtual Machines2022 IEEE/ACIS 20th International Conference on Software Engineering Research, Management and Applications (SERA)10.1109/SERA54885.2022.9806742(128-131)Online publication date: 25-May-2022
  • (2022)Distilling the Real Cost of Production Garbage Collectors2022 IEEE International Symposium on Performance Analysis of Systems and Software (ISPASS)10.1109/ISPASS55109.2022.00005(46-57)Online publication date: May-2022
  • (2021)Adaptive huge-page subrelease for non-moving memory allocators in warehouse-scale computersProceedings of the 2021 ACM SIGPLAN International Symposium on Memory Management10.1145/3459898.3463905(28-38)Online publication date: 22-Jun-2021
  • (2020)Sound garbage collection for C using pointer provenanceProceedings of the ACM on Programming Languages10.1145/34282444:OOPSLA(1-28)Online publication date: 13-Nov-2020
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Figures

Tables

Media

Share

Share

Share this Publication link

Share on social media