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)

Marking by the garbage collector

Marking marks any live objects and anything not marked as ready to be garbage collected. The objects keep a special bit that determines whether they are marked or not. Upon creation, the bit is 0. In the mark phase, if an object is still in use and should not be removed, it gets set to 1.

The heap is constantly changing and so is the stack. Objects on the heap that do not have a connection to the step are eligible for GC. They are unreachable and there is no possible way for the application to be using these objects. The objects that are not ready for removal are marked; the unmarked objects will be removed.

How exactly this is implemented differs depending on the implementation of Java and the specific garbage collector you are using. But at a high level, this process starts from the stack. All the object references on the stack are followed and the objects are marked.

If we look at our previous example, this is how they would be marked. We...