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)

Understanding memory leaks

A memory leak occurs when objects that are no longer needed are not freed up. This causes these objects to accumulate in memory. Given that memory is a finite resource, this can eventually result in your application slowing down or even crashing (with an out-of-memory (OOM) error).

Having fast servers or hosting your application in the cloud does not abstract you from the effects of poor memory management (memory leaks). As stated earlier, memory is a finite resource and even fast servers can run out of memory. If deploying on the cloud, it is tempting to simply scale up to address the issue of memory leaks; however, this results in higher costs for deploying an instance that is larger than it needs to be. It can even lead to hefty cloud service bills.

How fast you run out of memory depends on where in your code the memory leak occurs. If this is a piece of code that seldom runs, it will take a long time for the memory to get full. However, if this...