[go: up one dir, main page]
More Web Proxy on the site http://driver.im/ skip to main content
10.1145/3313808.3313820acmconferencesArticle/Chapter ViewAbstractPublication PagesveeConference Proceedingsconference-collections
research-article

ScissorGC: scalable and efficient compaction for Java full garbage collection

Published: 14 April 2019 Publication History

Abstract

Java runtime frees applications from manual memory management through automatic garbage collection (GC). This, however, is usually at the cost of stop-the-world pauses. State-of-the-art collectors leverage multiple generations, which will inevitably suffer from a full GC phase scanning and compacting the whole heap. This induces a pause tens of times longer than normal collections, which largely affects both throughput and latency of applications.
In this paper, we comprehensively analyze the full GC performance of the Parallel Scavenge garbage collector in HotSpot. We find that chain-like dependencies among heap regions cause low thread utilization and poor scalability. Furthermore, many heap regions are filled with live objects (referred to as dense regions), which are unnecessary to collect. To address these two problems, we provide, which contains two main optimizations: dynamically allocating shadow regions as compaction destinations to eliminate region dependencies and skipping dense regions to reduce GC workload. Evaluation results against the HotSpot JVM of OpenJDK 8/11 show that works on most benchmarks and leads to 5.6X/5.1X improvement at best in full GC throughput and thereby boost the application performance by up to 61.8%/49.0%.

References

[1]
Stephen M Blackburn, Robin Garner, Chris Hoffmann, Asjad M Khang, Kathryn S McKinley, Rotem Bentzur, Amer Diwan, Daniel Feinberg, Daniel Frampton, Samuel Z Guyer, et al. 2006. The DaCapo benchmarks: Java benchmarking development and analysis. In Proceedings of the 21th Annual ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications, October 22-26, 2006, USA. ACM, 169–190.
[2]
Rodrigo Bruno and Paulo Ferreira. 2017. POLM2: automatic profiling for object lifetime-aware memory management for hotspot big data applications. In Proceedings of the 18th ACM/IFIP/USENIX Middleware Conference. ACM, 147–160.
[3]
Rodrigo Bruno, Luís Picciochi Oliveira, and Paulo Ferreira. 2017. NG2C: pretenuring garbage collection with dynamic generations for HotSpot big data applications. In Proceedings of the 2017 ACM SIGPLAN International Symposium on Memory Management. ACM, 2–13.
[4]
Yingyi Bu, Bill Howe, Magdalena Balazinska, and Michael D Ernst. 2010. HaLoop: efficient iterative data processing on large clusters. Proceedings of the VLDB Endowment 3, 1-2 (2010), 285–296.
[5]
Brendon Cahoon and Kathryn S McKinley. 2001. Data flow analysis for software prefetching linked data structures in Java. In Parallel Architectures and Compilation Techniques, 2001. Proceedings. 2001 International Conference on. IEEE, 280–291.
[6]
David Detlefs, Christine Flood, Steve Heller, and Tony Printezis. 2004. Garbage-first garbage collection. In Proceedings of the 4th international symposium on Memory management. ACM, 37–48.
[7]
Stephan Ewen, Kostas Tzoumas, Moritz Kaufmann, and Volker Markl. 2012. Spinning fast iterative data flows. Proceedings of the VLDB Endowment 5, 11 (2012), 1268–1279.
[8]
Lokesh Gidra, Gaël Thomas, Julien Sopena, and Marc Shapiro. 2013. A study of the scalability of stop-the-world garbage collectors on multicores. In Proceedings of the eighteenth international conference on Architectural support for programming languages and operating systems. ACM, 229–240.
[9]
Lokesh Gidra, Gaël Thomas, Julien Sopena, Marc Shapiro, and Nhan Nguyen. 2015. NumaGiC: a Garbage Collector for Big Data on Big NUMA Machines. In Proceedings of the 20th International Conference on Architectural Support for Programming Languages and Operating Systems. ACM, 661–673.
[10]
Ionel Gog, Jana Giceva, Malte Schwarzkopf, Kapil Vaswani, Dimitrios Vytiniotis, Ganesan Ramalingan, Derek Murray, Steven Hand, and Michael Isard. 2015. Broom: sweeping out garbage collection from big data systems. In Proceedings of the 15th USENIX conference on Hot Topics in Operating Systems. USENIX Association, 2–2.
[11]
Joseph E Gonzalez, Reynold S Xin, Ankur Dave, Daniel Crankshaw, Michael J Franklin, and Ion Stoica. 2014. GraphX: Graph Processing in a Distributed Dataflow Framework. In OSDI, Vol. 14. 599–613.
[12]
Wessam Hassanein. 2016. Understanding and improving JVM GC work stealing at the data center scale. In Proceedings of the 2016 ACM SIGPLAN International Symposium on Memory Management. ACM, 46–54.
[13]
Michihiro Horie, Hiroshi Horii, Kazunori Ogata, and Tamiya Onodera. 2018. Balanced Double Queues for GC Work-stealing on Weak Memory Models. In Proceedings of the 2018 ACM SIGPLAN International Symposium on Memory Management (ISMM 2018). ACM, New York, NY, USA, 109–119.
[14]
JDK Bug System. 2016. { JDK-8146987} Improve Parallel GC Full GC by caching results of live_words_in_range(). https://bugs.openjdk.java.net/browse/JDK-8146987.
[15]
JDK Bug System. 2016. { JDK-8155588} org.apache.jasper.JasperException: Unable to compile class of JSP. https://bugs.openjdk.java.net/browse/JDK-8155588.
[16]
Haoyu Li, Mingyu Wu, and Haibo Chen. 2018. Analysis and Optimizations of Java Full Garbage Collection. In Proceedings of the 9th Asia-Pacific Workshop on Systems. ACM, 18.
[17]
Martin Maas, Krste Asanović, Tim Harris, and John Kubiatowicz. 2016. Taurus: A holistic language runtime system for coordinating distributed managed-language applications. ACM SIGOPS Operating Systems Review 50, 2 (2016), 457–471.
[18]
Martin Maas, Tim Harris, Krste Asanovic, and John Kubiatowicz. 2015. Trash Day: Coordinating Garbage Collection in Distributed Systems. In HotOS.
[19]
Khanh Nguyen, Lu Fang, Christian Navasca, Guoqing Xu, Brian Demsky, and Shan Lu. 2018. Skyway: Connecting Managed Heaps in Distributed Big Data Systems. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS ’18). ACM, New York, NY, USA, 56–69.
[20]
Khanh Nguyen, Lu Fang, Guoqing Xu, Brian Demsky, Shan Lu, Sanazsadat Alamian, and Onur Mutlu. 2016. Yak: A high-performance bigdata-friendly garbage collector. In Proc. the 12th USENIX Conference on Operating Systems Design and Implementation.
[21]
Diogenes Nunez, Samuel Z. Guyer, and Emery D. Berger. 2016. Prioritized Garbage Collection: Explicit GC Support for Software Caches. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA 2016). ACM, New York, NY, USA, 695–710.
[22]
OpenJDK. 2018. JEP 307: Parallel Full GC for G1. http://openjdk.java.net/jeps/307.
[23]
Filip Pizlo, Lukasz Ziarek, Petr Maj, Antony L. Hosking, Ethan Blanton, and Jan Vitek. 2010. Schism: Fragmentation-tolerant Real-time Garbage Collection. In Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI ’10). ACM, New York, NY, USA, 146–159.
[24]
Junjie Qian, Witawas Srisa-an, Du Li, Hong Jiang, Sharad Seth, and Yaodong Yang. 2015. SmartStealing: Analysis and Optimization of Work Stealing in Parallel Garbage Collection for Java VM. In Proceedings of the Principles and Practices of Programming on The Java Platform. ACM, 170–181.
[25]
Yaoping Ruan, Vivek S Pai, Erich Nahum, and John M Tracey. 2005. Evaluating the impact of simultaneous multithreading on network servers using real hardware. In ACM SIGMETRICS Performance Evaluation Review, Vol. 33. ACM, 315–326.
[26]
SNAP. 2014. Friendster. http://snap.stanford.edu/data/comFriendster.html.
[27]
SPEC. 2008. SPECjvm2008. https://www.spec.org/jvm2008/.
[28]
Kun Suo, Jia Rao, Hong Jiang, and Witawas Srisa-an. 2018. Characterizing and optimizing hotspot parallel garbage collection on multicore systems. In Proceedings of the Thirteenth EuroSys Conference. ACM, 35:1–35:15.
[29]
Tianyang Lei. 2015. {PATCH} enhancement to ParallelScavenge Full GC. http://mail.openjdk.java.net/pipermail/hotspot-gc-dev/2015-December/015899.html.
[30]
David Ungar. 1984. Generation scavenging: A non-disruptive high performance storage reclamation algorithm. In ACM Sigplan notices, Vol. 19. ACM, 157–167.
[31]
Jingjing Wang and Magdalena Balazinska. 2017. Elastic Memory Management for Cloud Data Analytics. In 2017 USENIX Annual Technical Conference (USENIX ATC 17). USENIX Association, Santa Clara, CA, 745–758. https://www.usenix.org/conference/atc17/ technical-sessions/presentation/wang
[32]
Mingyu Wu, Ziming Zhao, Haoyu Li, Heting Li, Haibo Chen, Binyu Zang, and Haibing Guan. 2018. Espresso: Brewing Java For More NonVolatility with Non-volatile Memory. In Proceedings of the Twenty-Third International Conference on Architectural Support for Programming Languages and Operating Systems. 70–83.
[33]
Yang Yu, Tianyang Lei, Weihua Zhang, Haibo Chen, and Binyu Zang. 2016. Performance Analysis and Optimization of Full Garbage Collection in Memory-hungry Environments. In Proceedings of the 12th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments. ACM, 123–130.
[34]
Matei Zaharia, Mosharaf Chowdhury, Tathagata Das, Ankur Dave, Justin Ma, Murphy McCauly, Michael J. Franklin, Scott Shenker, and Ion Stoica. 2012. Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing. In NSDI.
[35]
Matei Zaharia, Mosharaf Chowdhury, Michael J Franklin, Scott Shenker, and Ion Stoica. 2010. Spark: cluster computing with working sets. In Proceedings of the 2nd USENIX conference on Hot topics in cloud computing.
[36]
Jin Zhou and Brian Demsky. 2012. Memory management for manycore processors with software configurable locality policies. In ACM SIGPLAN Notices, Vol. 47. ACM, 3–14.
[37]
Paul C Zikopolous, George Baklarz, and Dan Scott. 2005. Apache derby/IBM cloudscape. Prentice Hall PTR.

Cited By

View all
  • (2022)Analysing and Predicting Energy Consumption of Garbage Collectors in OpenJDKProceedings of the 19th International Conference on Managed Programming Languages and Runtimes10.1145/3546918.3546925(3-15)Online publication date: 14-Sep-2022
  • (2020)GCPersistProceedings of the 16th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments10.1145/3381052.3381318(1-14)Online publication date: 17-Mar-2020
  • (2020)An efficient garbage collection in java virtual machine via swap I/O optimizationProceedings of the 35th Annual ACM Symposium on Applied Computing10.1145/3341105.3373982(1238-1245)Online publication date: 30-Mar-2020

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
VEE 2019: Proceedings of the 15th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments
April 2019
206 pages
ISBN:9781450360203
DOI:10.1145/3313808
  • General Chair:
  • Jennifer Sartor,
  • Program Chairs:
  • Mayur Naik,
  • Chris Rossbach
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: 14 April 2019

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Full garbage collection
  2. Java virtual machine
  3. Memory management
  4. Parallel Scavenge
  5. Performance

Qualifiers

  • Research-article

Conference

VEE '19

Acceptance Rates

Overall Acceptance Rate 80 of 235 submissions, 34%

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)31
  • Downloads (Last 6 weeks)4
Reflects downloads up to 16 Jan 2025

Other Metrics

Citations

Cited By

View all
  • (2022)Analysing and Predicting Energy Consumption of Garbage Collectors in OpenJDKProceedings of the 19th International Conference on Managed Programming Languages and Runtimes10.1145/3546918.3546925(3-15)Online publication date: 14-Sep-2022
  • (2020)GCPersistProceedings of the 16th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments10.1145/3381052.3381318(1-14)Online publication date: 17-Mar-2020
  • (2020)An efficient garbage collection in java virtual machine via swap I/O optimizationProceedings of the 35th Annual ACM Symposium on Applied Computing10.1145/3341105.3373982(1238-1245)Online publication date: 30-Mar-2020

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