Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/1028976.1028983acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
Article

The garbage collection advantage: improving program locality

Published: 01 October 2004 Publication History

Abstract

As improvements in processor speed continue to outpace improvements in cache and memory speed, poor locality increasingly degrades performance. Because copying garbage collectors move objects, they have an opportunity to improve locality. However, no static copying order is guaranteed to match program traversal orders. This paper introduces <i>online object reordering</i> (OOR) which includes a new dynamic, online class analysis for Java that detects program traversal patterns and exploits them in a copying collector. OOR uses run-time method sampling that drives just-in-time (JIT) compilation. For each <i>hot</i> (frequently executed) method, OOR analysis identifies the hot field accesses. At garbage collection time, the OOR collector then copies referents of hot fields together with their parent. Enhancements include static analysis to exclude accesses in cold basic blocks, heuristics that decay heat to respond to phase changes, and a separate space for hot objects. The overhead of OOR is on average negligible and always less than 2% on Java benchmarks in Jikes RVM with MMTk. We compare program performance of OOR to static class-oblivious copying orders (e.g., breadth and depth first). Performance variation due to static orders is often low, but can be up to 25%. In contrast, OOR matches or improves upon the best static order since its history-based copying tunes memory layout to program traversal.

References

[1]
B. Alpern et al. The Jalapeño virtual machine. IBM Systems Journal, 39(1):211--238, February 2000.]]
[2]
A. W. Appel. Simple generational garbage collection and fast allocation. Software Practice and Experience, 19(2):171--183, 1989.]]
[3]
M. Arnold, S. J. Fink, D. Grove, M. Hind, and P. Sweeney. Adaptive optimization in the Jalapeño JVM. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 47--65, Minneapolis, MN, October 2000.]]
[4]
S. M. Blackburn, P. Cheng, and K. S. McKinley. Myths and realities: The performance impact of garbage collection. In ACM SIGMETRICS Conference on Measurement & Modeling Computer Systems, pages 25--36, NY, NY, June 2004.]]
[5]
S. M. Blackburn, P. Cheng, and K. S. McKinley. Oil and water? High performance garbage collection in Java with JMTk. In Proceedings of the International Conference on Software Engineering, pages 137--146, Scotland, UK, May 2004.]]
[6]
S. M. Blackburn, K. S. McKinley, J. E. B. Moss, S. Augart, E. D. Berger, P. Cheng, A. Diwan, S. Guyer, M. Hirzel, C. Hoffman, A. Hosking, X. Huang, A. Khan, P. McGachey, D. Stefanovic, and B. Wiedermann. The DaCapo benchmarks. Technical report, 2004. http://ali-www.cs.umass.edu/DaCapo/Benchmarks.]]
[7]
T. M. Chilimbi, B. Davidson, and J. R. Larus. Cache-conscious structure definition. In ACM SIGPLAN Conference on Programming Languages Design and Implementation, pages 13--24, Atlanta, GA, May 1999.]]
[8]
T. M. Chilimbi, M. D. Hill, and J. R. Larus. Cache-conscious structure layout. In ACM SIGPLAN Conference on Programming Languages Design and Implementation, pages 1--12, Atlanta, GA, May 1999.]]
[9]
T. M. Chilimbi and J. R. Larus. Using generational garbage collection to implement cache-conscious data placement. In ACM International Symposium on Memory Management, pages 37--48, Vancouver, BC, Oct. 1998.]]
[10]
S. Dieckmann and U. Hölzle. A study of the allocation behavior of the SPECjvm98 Java benchmarks. In Proceedings of the European Conference on Object-Oriented Programming, pages 92--115, June 1999.]]
[11]
L. Eeckhout, A. Georges, and K. D. Bosschere. How Java programs interact with virtual machines at the microarchitectural level. In ACM Conference on Object-Oriented Programming Systems, Languages, and Applications, pages 244--358, Anaheim, CA, Oct. 2003.]]
[12]
T. Kistler and M. Franz. Automated data-member layout of heap objects to improve memory-hierarchy performance. ACM Transactions on Programming Languages and Systems, 22(3):490--505, May 2000.]]
[13]
M. S. Lam, P. R. Wilson, and T. G. Moher. Object type directed garbage collection to improve locality. In Y. Bekkers and J. Cohen, editors, ACM International Workshop on Memory Management, number 637 in Lecture Notes in Computer Science, pages 404--425, St. Malo, France, Sept. 1992. Springer-Verlag.]]
[14]
D. Lea. A memory allocator. http://gee.cs.oswego.edu/dl/html/malloc.html, 1997.]]
[15]
H. Lieberman and C. E. Hewitt. A real time garbage collector based on the lifetimes of objects. Communications of the ACM, 26(6):419--429, 1983.]]
[16]
J. E. B. Moss, K. S. McKinley, S. M. Blackburn, E. D. Berger, A. Diwan, A. Hosking, D. Stefanovic, and C. Weems. The DaCapo project. Technical report, 2004. http://ali-www.cs.umass.edu/DaCapo/.]]
[17]
M. Pettersson. Linux Intel/x86 performance counters, 2003. http://user.it.uu.se/ mikpe/linux/perfctr/.]]
[18]
S. Rubin, R. Bodik, and T. Chilimbi. An efficient profile-analysis framework for data-layout optimizations. In ACM Symposium on the Principles of Programming Languages, pages 140--153, Portland, OR, 2002.]]
[19]
Standard Performance Evaluation Corporation. SPECjvm98 Documentation, release 1.03 edition, March 1999.]]
[20]
Standard Performance Evaluation Corporation. SPECjbb2000 (Java Business Benchmark) Documentation, release 1.01 edition, 2001.]]
[21]
D. M. Ungar. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. In ACM SIGSOFT/SIGPLAN Software Engineering Symposium on Practical Software Development Environments, pages 157--167, April 1984.]]
[22]
P. R. Wilson, M. S. Lam, and T. G. Moher. Effective static-graph reorganization to improve locality in garbage-collected systems. In ACM SIGPLAN Conference on Programming Languages Design and Implementation, pages 177--191, Toronto, Canada, June 1991.]]

Cited By

View all
  • (2024)Mutator-Driven Object Placement using Load BarriersProceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3679007.3685060(14-27)Online publication date: 13-Sep-2024
  • (2024)Memory Management on Mobile DevicesProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665510(15-29)Online publication date: 20-Jun-2024
  • (2023)Concurrent GCs and Modern Java Workloads: A Cache PerspectiveProceedings of the 2023 ACM SIGPLAN International Symposium on Memory Management10.1145/3591195.3595269(71-84)Online publication date: 6-Jun-2023
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
OOPSLA '04: Proceedings of the 19th annual ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications
October 2004
462 pages
ISBN:1581138318
DOI:10.1145/1028976
  • cover image ACM SIGPLAN Notices
    ACM SIGPLAN Notices  Volume 39, Issue 10
    OOPSLA '04
    October 2004
    448 pages
    ISSN:0362-1340
    EISSN:1558-1160
    DOI:10.1145/1035292
    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: 01 October 2004

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. adaptive
  2. compiler-assisted
  3. generational
  4. locality

Qualifiers

  • Article

Conference

OOPSLA04

Acceptance Rates

Overall Acceptance Rate 268 of 1,244 submissions, 22%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)43
  • Downloads (Last 6 weeks)5
Reflects downloads up to 20 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2024)Mutator-Driven Object Placement using Load BarriersProceedings of the 21st ACM SIGPLAN International Conference on Managed Programming Languages and Runtimes10.1145/3679007.3685060(14-27)Online publication date: 13-Sep-2024
  • (2024)Memory Management on Mobile DevicesProceedings of the 2024 ACM SIGPLAN International Symposium on Memory Management10.1145/3652024.3665510(15-29)Online publication date: 20-Jun-2024
  • (2023)Concurrent GCs and Modern Java Workloads: A Cache PerspectiveProceedings of the 2023 ACM SIGPLAN International Symposium on Memory Management10.1145/3591195.3595269(71-84)Online publication date: 6-Jun-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)Online Application Guidance for Heterogeneous Memory SystemsACM Transactions on Architecture and Code Optimization10.1145/353385519:3(1-27)Online publication date: 6-Jul-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
  • (2022)A Hybrid Distributed EA Approach for Energy Optimisation on SmartphonesEmpirical Software Engineering10.1007/s10664-022-10188-527:6Online publication date: 1-Nov-2022
  • (2020)Exploring Impact of Profile Data on Code Quality in the HotSpot JVMACM Transactions on Embedded Computing Systems10.1145/339189419:6(1-26)Online publication date: 3-Oct-2020
  • (2020)Efficient nursery sizing for managed languages on multi-core processors with shared cachesProceedings of the 18th ACM/IEEE International Symposium on Code Generation and Optimization10.1145/3368826.3377908(1-15)Online publication date: 22-Feb-2020
  • (2020)A Rigorous Benchmarking and Performance Analysis Methodology for Python Workloads2020 IEEE International Symposium on Workload Characterization (IISWC)10.1109/IISWC50251.2020.00017(83-93)Online publication date: Oct-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

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media