A performance comparison of garbage collector algorithms in Java Virtual Machine


In programming languages with automatic memory management garbage collection plays an important role of cleaning unused memory. Garbage collection algorithms have been developed for many years and aim to maximize the application’s performance. This paper presents and compares a performance of five garbage collection algorithms present in current version of Java 12 in three applications with different object lifetime span. The analysis covered the system responsiveness, garbage collector workload and application throughput at high application load.


garbage collecting; Java Virtual Machine; application performance

[1] Appel A. W.: Simple generational garbage collection and fast allocation. Software: Practice and Experience, nr 2/1989, Tom 19, s. 171-183.
[2] Carpen-Amarie M., Marlier P., Felber P., Thomas G.: A Performance Study of Java Garbage Collectors on Multicore Architectures, Proceedings of the Sixth International Workshop on Programming Models and Applications for Multicores and Manycores, 2015, s. 20-29.
[3] Detlefs D., Flood C., Heller S., Printezis T.: Garbage-first garbage collection. In Proceedings of the 4th international symposium on Memory management. ACM. 2004, s. 37-48.
[4] Gidra L., Thomas G., Sopena J., Shapiro M.: Assessing the scalability of garbage collectors on many cores. In Proceedings of the 6th Workshop on Programming Languages and Operating Systems, ACM, 2011, s. 7.
[5] Grgic H., Mihaljevic B., Radovan A.: Comparison of garbage collectors in Java programming language, 41st International Convention on Information and Communication Technology, Electronics and Microelectronics, 2018.
[6] Li H., Wu M., Chen H.: Analysis and Optimizations of Java Full Garbage Collection, Proceedings of the 9th Asia-Pacific Workshop on Systems, 2018, s. 18.
[7] Li H., Wu M., Zang B., Chen H.: ScissorGC: Scalable and Efficient Compaction for Java Full Garbage Collection, 2019.
[8] Suo K., Rao J., Jiang H., Srisa-an W.: Characterizing and optimizing hotspot parallel garbage collection on multicore systems. EuroSys, 2018, s. 35-1.
[9] Tauro C., Prabhu M., Saldanha V.: CMS and G1 Collector in Java 7 Hotspot: Overview, Comparisons and Performance Metrics. International Journal of Computer Applications, 43(11), 2012.
[10] Yu Y., Lei T., Zhang W., Chen H., Zang B.: Performance analysis and optimization of full garbage collection in memory-hungry environments. In ACM SIGPLAN Notices, ACM. Nr 7/2016, Tom 51, s. 123-130.
[11] Flood C. H., Kennke R., Dinn A., Haley A., Westrelin R.: Shenandoah: An open-source concurrent compacting garbage collector for openjdk. In Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools, ACM, 2016, s. 13.
[12] Struktura pamięci Wirtualnej Maszyny Java , https://www.oracle.com/technetwork/java/javase/memorymanagement-whitepaper-150215.pdf [24.03.2019].
[13] Dokumentacja programu jStat, https://docs.oracle.com/javase/7/docs/technotes/tools/share/jstat.html [24.03.2019].
[14] Hunt C., Beckwith M., Parhar P., Rutisson B.: Java Performance Companion, Addison-Wesley Professional, 2016.
[15] Opis algorytmu Shenandoah https://wiki.openjdk.java.net/display/shenandoah/Main 24.03.2019

Published : 2019-12-30

Kopeć, I., & Smołka, J. (2019). A performance comparison of garbage collector algorithms in Java Virtual Machine. Journal of Computer Sciences Institute, 13, 359-365. https://doi.org/10.35784/jcsi.1333

Igor Kopeć  igor.kopec@pollub.edu.pl
Lublin University of Technology  Poland
Jakub Smołka 
Lublin University of Technology  Poland