Generational Garbage Collection in HotSpot
This section describes the generational garbage collection architecture used in the HotSpot JVM. Young Generation stores objects with shorter lives and Tenured Generation stores objects with longer lives.
Earlier we learned the garbage collector's role and responsibilities.
Now let's look at a real example, the garbage collector implemented in the HotSpot JVM.
Architecturally, the HotSpot garbage collector is called Generational Collector,
which divides the memory into two parts (generations):
- Young Generation - Stores objects that have shorter lives with less memory space.
Garbage collections occur more frequently in Young Generation.
The operation of garbage collection in the Young Generation is referred as Minor Collection.
Faster and less space efficient garbage collection algorithms can be chosen for Minor Collections.
- Tenured Generation - Stores objects that have longer lives with more memory space.
Garbage collections occur less frequently in Tenured Generation.
The operation of garbage collection in the Tenured Generation is referred as Full Collection, or Major Collection.
More space efficient and slower garbage collection algorithms can be chosen for Full Collections.
A new objects is normally allocated in the Young Generation first.
If it survives some number of Minor Collections, it will be then promoted to the Tenured Generation.
The generational garbage collection approach is more efficient because
of the following weak generational hypothesis observed in most Java applications:
- Most objects have shorter lives.
- Less older objects referencing younger objects than younger objects referencing older objects.
The picture below illustrates the generational garbage collection architecture used in HotSpot JVM:
Last update: 2014.
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
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
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
PDF Printing Version