Book Image

Java Memory Management

By : Maaike van Putten, Dr. Seán Kennedy
Book Image

Java Memory Management

By: Maaike van Putten, Dr. Seán Kennedy

Overview of this book

Understanding how Java organizes memory is important for every Java professional, but this particular topic is a common knowledge gap for many software professionals. Having in-depth knowledge of memory functioning and management is incredibly useful in writing and analyzing code, as well as debugging memory problems. In fact, it can be just the knowledge you need to level up your skills and career. In this book, you’ll start by working through the basics of Java memory. After that, you’ll dive into the different segments individually. You’ll explore the stack, the heap, and the Metaspace. Next, you’ll be ready to delve into JVM standard garbage collectors. The book will also show you how to tune, monitor and profile JVM memory management. Later chapters will guide you on how to avoid and spot memory leaks. By the end of this book, you’ll have understood how Java manages memory and how to customize it for the benefit of your applications.
Table of Contents (10 chapters)

Exploring GC implementations

The standard JVM has five implementations for GC. Other Java implementations can have other GC implementations, such as the garbage collectors from IBM and Azul. The way these work is relatively easy to grasp after understanding the following five implementations that come with the standard JVM:

  • Serial GC
  • Parallel GC
  • CMS (concurrent mark sweep) GC
  • G1 GC
  • ZGC (Z garbage collector)

We will examine in detail how these implementations work a little later (however, we will not be discussing all the different command-line options for each of them). But, before we discuss how these specific garbage collectors work, another concept needs to be addressed: the concept of generational GC.

Generational GC

If you have a large Java application running, pausing the entire program in order to wait for the garbage collector to have marked every single live object would be a performance nightmare. Luckily, they thought of something cleverer...