Runtimes Software Developer at IBM’s OpenJ9.
Runtimes Software Developer at IBM’s OpenJ9.
This talk is meant to demystify how garbage collection (GC) works in a Java runtime. The beginning of the talk will be focused on what GC is, discuss truths and myths, and how it is useful for the lifetime of a program. After laying out the basics I’ll explain how each GC algorithm work and how they can be implemented in real-world JVM (e.g. OpenJ9, Hotspot). How can these algorithms be put together to make a good GC policy, and how one can better select a configuration/policy for their application? These are some of the questions that I will be addressing during this talk. I will do so by tying these algorithms to OpenJ9 GC policies and compare them to other policies such as G1 and Shenandoah.
Different programs have different behaviors; by using the more appropriate policy for your application, it can improve its performance considerably. Lastly, I will conclude the talk by mentioning one advanced feature of OpenJ9 GC called double mapping arraylets, which is a way to improve memory management of large arrays in region-based GCs. By the end of the talk, you will have a better understanding of how the JVM manages its memory and be able to choose the more appropriate GC policy for your application.