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)

The basics of JVM tuning for memory management

The first rule of JVM tuning for performance improvement is probably that it should be the last option for improvement. Look at this code snippet:

int i = 0;
List<Integer> list = new ArrayList<>();
while(i < 100) {

Will JVM tuning help? No, because we’re stuck in an infinite loop, since i never gets increased. Of course, there are a lot of less obvious examples, but when code can be improved and optimized, this must be done first before thinking about JVM tuning.

If the hardware can realistically be optimized, this should be done before JVM tuning as well. By this, I don’t mean that you should fix a memory leak by just adding more memory; of course, that’s not a fix. But when your application accidentally gets very successful and things get slow, chances are that you are better off upgrading the hardware than...