Java GC Tutorials - Herong's Tutorial Examples - v1.12, by Herong Yang
Default NewRatio - Old vs. New Generation
This section describes the default NewRatio which is the ratio of old generation size vs. new generation size.
From the last tutorial, we learned that the Serial GC will automatically divide the heap memory into 2 generations: 30% for the "new" (or Young) generation and 70% for the "old" (or Tenured) generation. In this tutorial, let's run more tests to confirm this:
1. Heap size: 10 MB -
herong> java -Xms10m -Xmx10m -XX:+UseSerialGC -Xlog:gc+heap=info \ GarbageCollection ... [debug][gc,heap] GC(0) Heap after GC invocations=1 (full 0): def new generation total 3072K, used 319K [... [debug][gc,heap] GC(0) eden space 2752K, 0% used [... [debug][gc,heap] GC(0) from space 320K, 99% used [... [debug][gc,heap] GC(0) to space 320K, 0% used [... [debug][gc,heap] GC(0) tenured generation total 6848K, used 739K [... [debug][gc,heap] GC(0) the space 6848K, 10% used [... ...
2. Heap size: 20 MB -
herong> java -Xms20m -Xmx20m -XX:+UseSerialGC -Xlog:gc+heap=info \ GarbageCollection ... [gc,heap] GC(0) Heap after GC invocations=1 (full 0): def new generation total 6144K, used 639K [... [gc,heap] GC(0) eden space 5504K, 0% used [... [gc,heap] GC(0) from space 640K, 99% used [... [gc,heap] GC(0) to space 640K, 0% used [... [gc,heap] GC(0) tenured generation total 13696K, used 1444K [... [gc,heap] GC(0) the space 13696K, 10% used [... ...
3. Heap size: 40 MB -
herong> java -Xms40m -Xmx40m -XX:+UseSerialGC -Xlog:gc+heap=info \ GarbageCollection ... [debug][gc,heap] GC(0) Heap after GC invocations=1 (full 0): def new generation total 12288K, used 1343K [... [debug][gc,heap] GC(0) eden space 10944K, 0% used [... [debug][gc,heap] GC(0) from space 1344K, 99% used [... [debug][gc,heap] GC(0) to space 1344K, 0% used [... [debug][gc,heap] GC(0) tenured generation total 27328K, used 2024K [... [debug][gc,heap] GC(0) the space 27328K, 7% used [... ...
4. Heap size: 80 MB -
herong> java -Xms80m -Xmx80m -XX:+UseSerialGC -Xlog:gc+heap=info \ GarbageCollection ... [debug][gc,heap] GC(0) Heap after GC invocations=1 (full 0): def new generation total 24576K, used 2688K [... [debug][gc,heap] GC(0) eden space 21888K, 0% used [... [debug][gc,heap] GC(0) from space 2688K, 100% used [... [debug][gc,heap] GC(0) to space 2688K, 0% used [... [debug][gc,heap] GC(0) tenured generation total 54656K, used 3308K [... [debug][gc,heap] GC(0) the space 54656K, 6% used [... ...
The table below is the summary of above tests:
Heap Size New Generation Tenured Generation --------- -------------- ------------------ 10M 3072K 30% 6848K 70% 20M 6144K 30% 13696K 70% 40M 12288K 30% 27328K 70% 80M 24576K 30% 54656K 70%
Conclusion: By default, Serial GC gives 30% of heap to the "new" generation, and 70% to the tenured generation. Or the default radio of "old" generation size and "new" generation size is 2.33. This ratio is also called NewRatio.
Table of Contents
Heap Memory Area and Size Control
JVM Garbage Collection Logging
Introduction of Garbage Collectors
►Serial Collector - "+XX:+UseSerialGC"
GC Log Message Format for Serial Collector
GC Log Message Examples of Serial Collector
Log Message Types from Serial Collector
Serial Collector Stops Application for Minor/Major GC
Usage Report on Heap Memory Areas
►Default NewRatio - Old vs. New Generation
"-XX:NewRatio" - Ratio of Tenured and "new" Generation
"-XX:SurvivorRatio" - Ratio of Eden and Survivor Space
Serial GC Tracing - Tight Heap
Serial GC Tracing - Tight Heap (Part 2)
Serial GC Tracing - Tight Heap (Part 3)
Serial GC Tracing - Plenty of Heap
Serial GC Tracing - Aged Live Objects
Serial GC Tracing - Tenuring Threshold
"-XX:TargetSurvivorRatio" - Second Tenuring Condition
Serial GC Tracing - Tenuring Threshold Controlled
"-XX:+NeverTenure" and "-XX:+AlwaysTenure" Working
Minor GC Triggering Condition of Serial Collector
Parallel Collector - "+XX:+UseParallelGC"
Concurrent Mark-Sweep (CMS) Collector - "+XX:+UseConcMarkSweepGC"
Garbage First (G1) Collector - "+XX:+UseG1GC"
The Z Garbage Collector (ZGC) - "+XX:+UseZGC"
Object References and Garbage Collection
Garbage Collection Performance Test Program
Performance Tests on Serial Collector
Performance Tests on Parallel collector
Performance Tests on Concurrent collector
Performance Tests on G1 collector