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)

Sweeping by the garbage collector

Once the objects that need to be kept are marked, it’s time to start the next phase to actually free the memory. This deletion of the objects is called sweeping in GC jargon. To make it more interesting, we have three kinds of sweeping:

  • Normal sweeping
  • Sweeping with compacting
  • Sweeping with copying

We are going to discuss all these in more detail with illustrations to help you understand what’s going on.

Normal sweeping

Normal sweeping is the removal of unmarked objects. Figure 4.9 shows five objects in memory. Two of them, the ones with an x in them, will be removed.

Figure 4.9 – Schematic overview of memory with marked objects

Figure 4.9 – Schematic overview of memory with marked objects

The memory blocks are not of equal sizes; some of them are smaller while others are larger. After sweeping the unreachable objects, the memory looks as follows:

Figure 4.10 – Schematic overview of memory after sweeping

Figure 4.10 – Schematic overview of memory after sweeping...