Memory Management and Garbage Collectors

This chapter provides tutorial notes and example codes on memory management and garbage collectors. Topics include JVM memory management guidelines; OutOfMemoryError exception; Garbage Collection (GC); Young and Tenured Heap regions; Eden and Survivor spaces; Mark-Sweep-Compact algorithm; serial, parallel, concurrent and regionalized collectors; GC details logging.

Memory Management General Rules

Java Exception: "java.lang.OutOfMemoryError: Java heap space"

OutOfMemoryError Comparison of HotSpot and JRockit

Garbage Collection Demonstration

JVM Memory Manager - Garbage Collector

Generational Garbage Collection in HotSpot

Young Generation Collection - Minor Collection

Tenured Generation Collection - Full Collection

HotSpot Default Garbage Collector - Serial Collector

"-XX:+PrintGCDetails" - Garbage Collection Logging

GC Log Messages on GarbageCollection.java

Serial, Parallel, Concurrent, and Regionalized Collectors

Parallel Collector GC Log Message Format

Parallel Compacting Collector GC Log Message Format

Concurrent Mark-Sweep Collector GC Log Message Format

Garbage First GC Log Message Format

Conclusions:

Table of Contents

 About This Book

 Downloading and Installing JDK 1.8.0 on Windows

 Downloading and Installing JDK 1.7.0 on Windows

 java.lang.Runtime Class - The JVM Instance

 java.lang.System Class - The Operating System

 ClassLoader Class - Class Loaders

 Class Class - Class Reflections

 Sun's JVM - Java HotSpot VM

 JRockit JVM 28.2.7 by Oracle Corporation

 JVM Runtime Data Areas

Memory Management and Garbage Collectors

 Garbage Collection Tests

 JVM Stack, Frame and Stack Overflow

 Thread Testing Program and Result

 CPU Impact of Multi-Thread Applications

 I/O Impact of Multi-Thread Applications

 CDS (Class Data Sharing)

 Micro Benchmark Runner and JVM Options

 Micro Benchmark Tests on "int" Operations

 Micro Benchmark Tests on "long" Operations

 Micro Benchmark Tests in JIT Compilation Mode

 Micro Benchmark Tests on "float" and "double" Operations

 Outdated Tutorials

 References

 PDF Printing Version