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)

Spotting memory leaks

So, you may wonder what typically when your application starts to respond somewhat slower after running for some time. The system administrator might just restart the application now and then to free the unnecessarily accumulated memory. This need for a restart is a typical symptom of a memory leak.

As memory fills up due to a memory leak, applications will slow down and even crash. While an application slowing down is not necessarily due to a memory leak, this often is the case. When faced with code that you suspect contains a memory leak, the following metrics are very helpful in diagnosing the application:

  • Heap memory footprint
  • Garbage collection activity
  • Heap dump

In order to demonstrate how to monitor these metrics, we will need an application that contains a memory leak. Figure 7.1 shows such a program:

Figure 7.1 – Program with a memory leak

Figure 7.1 – Program with a memory leak

In Figure 7.1, we are in an infinite loop starting...