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)

Summary

In this chapter, we learned how to avoid memory leaks in our code. The first step was to understand that memory leaks occur when objects, when no longer needed, maintain links to the stack. This prevents the garbage collector from reclaiming them. Given that memory is a finite resource, this is never desirable. As these objects accumulate, your application slows down and eventually crashes.

One common source of memory leaks is bugs in our code. However, there are ways to debug memory leaks. In order to demonstrate how to debug leaky code, we presented a program containing a memory leak. VisualVM is a tool that enables us to monitor the metrics of interest—the heap memory footprint, garbage collection activity, and the heap dump (when we run out of heap space).

The heap footprint validated the presence of a memory leak as it showed the used heap space totally occupying the available heap space. In other words, objects on the heap were not reclaimed. Meanwhile, the...