Improving the Testing of Java Garbage Collection Through an Efficient Benchmark Generation

Garbage Collection (GC) is a core feature of multiple modern technologies (e.g., Java, Android). On one hand, it offers significant software engineering benefits over explicitly memory management, like preventing most types of memory leaks. On the other hand, GC is a known cause of performance degradation. However, it is considerably challenging to understand its exact impact on the overall application performance. This is because the non-deterministic nature of GC makes very complex to properly model it and evaluate its performance impacts. To help tackling these problems, we present an engine to generate realistic GC benchmarks by enabling to effectively capture the GC/memory behaviours experienced by real-world Java applications. We also demonstrate, through a comprehensive experimental evaluation, how such benchmarks can be useful to strengthen the evaluation of GC-related advancements.

[1]  Mathias Payer,et al.  One Process to Reap Them All: Garbage Collection as-a-Service , 2017, VEE.

[2]  Shrinivas B. Joshi,et al.  Apache hadoop performance-tuning methodologies and best practices , 2012, ICPE '12.

[3]  Witawas Srisa-an,et al.  AS-GC: An Efficient Generational Garbage Collector for Java Application Servers , 2007, ECOOP.

[4]  Perry Cheng,et al.  Myths and realities: the performance impact of garbage collection , 2004, SIGMETRICS '04/Performance '04.

[5]  A. Omar Portillo-Dominguez,et al.  Improving the Testing of Clustered Systems Through the Effective Usage of Java Benchmarks , 2017, 2017 5th International Conference in Software Engineering Research and Innovation (CONISOFT).

[6]  Steffen Becker,et al.  The Palladio component model for model-driven performance prediction , 2009, J. Syst. Softw..

[7]  Portillo Dominguez,et al.  Performance optimisation of clustered java systems , 2016 .

[8]  Geoffrey Phipps Comparing observed bug and productivity rates for Java and C++ , 1999 .

[9]  A. Omar Portillo-Dominguez Towards an Efficient Benchmark Generation Engine for Garbage Collection , 2018, ICPE Companion.

[10]  Xiangyu Li,et al.  Hetero-mark, a benchmark suite for CPU-GPU collaborative computing , 2016, 2016 IEEE International Symposium on Workload Characterization (IISWC).

[11]  A. Omar Portillo-Dominguez,et al.  Load Balancing of Java Applications by Forecasting Garbage Collections , 2014, 2014 IEEE 13th International Symposium on Parallel and Distributed Computing.

[12]  Filip Pizlo,et al.  A study of concurrent real-time garbage collectors , 2008, PLDI '08.

[13]  Christina Thorpe,et al.  COCOA: A Synthetic Data Generator for Testing Anonymization Techniques , 2016, PSD.

[14]  A. Omar Portillo-Dominguez,et al.  TRINI: an adaptive load balancing strategy based on garbage collection for clustered Java systems , 2016, Softw. Pract. Exp..

[15]  Witawas Srisa-an,et al.  Garbage collection: Java application servers' Achilles heel , 2008, Sci. Comput. Program..

[16]  Daniel Sánchez,et al.  Tailbench: a benchmark suite and evaluation methodology for latency-critical applications , 2016, 2016 IEEE International Symposium on Workload Characterization (IISWC).

[17]  Kevin Skadron,et al.  ANMLzoo: a benchmark suite for exploring bottlenecks in automata processing engines and architectures , 2016, 2016 IEEE International Symposium on Workload Characterization (IISWC).

[18]  A. Omar Portillo-Dominguez,et al.  Adaptive GC-Aware Load Balancing Strategy for High-Assurance Java Distributed Systems , 2015, 2015 IEEE 16th International Symposium on High Assurance Systems Engineering.