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 zoomed in on the Metaspace (formerly known as PermGen). The Metaspace is a special area of non-heap memory reserved for a class’s metadata. The metadata consists of information enabling the JVM to work with the class: for example, method bytecode, constants, and annotations. When a class is first used, its metadata is loaded into the Metaspace. An example is the creation of an object for the first time.

By default, the native memory available to the Metaspace is unlimited. A maximum Metaspace size is configurable using the JVM –XX:MaxMetaspaceSize flag. A threshold value or high-water mark can be set initially using the –XX:MetaspaceSize flag. If a threshold value is set and reached, this induces a run of the garbage collector. Using both JVM flags, –XX:MinMetaspaceFreeRatio and –XX:MaxMetaspaceFreeRatio, in conjunction with garbage collection results, we can dynamically influence the high-water mark and, therefore,...