"-XX:+PrintHeapAtGC" - Print Heap Summary per GC

This section describes the garbage collection logging option, '-XX:+PrintHeapAtGC', which prints two snapshots of the heap memory for each GC, one before the GC and another after the GC.

In this tutorial, let's try the "-XX:+PrintHeapAtGC" garbage collection logging option to see what we will get in the log file:

herong> \progra~1\java\jdk1.8.0\bin\java -Xms2m -Xmx64m \
   -XX:+PrintHeapAtGC -Xloggc:gc.log GarbageCollection

Step/TotalMemory/FreeMemory/UsedMemory:
1   2031616   698408   1333208
2   3874816   1472824   2401992
3   3874816   424944   3449872
4   8970240   4441352   4528888
...
(Ctrl-C)

herong> more gc.log

{Heap before GC invocations=0 (full 0):
   -- invocations=0: 0 GCs (Minor and Major) have been performed
   -- full 0: 0 Major GCs have been performed
   -- Major GC is referred as Full GC in log messages

 def new generation   total 960K, used 878K [...
  eden space 896K,  98% used [...
  from space 64K,   0% used [...
  to   space 64K,   0% used [...
 tenured generation   total 1024K, used 0K [...
   the space 1024K,   0% used [...
 Metaspace used 1555K, capacity 2242K, committed 2368K, reserved 4480K
   -- The "eden" space is almost full, 98%. Time for Minor GC.

0.113: [GC (Allocation Failure)  878K->756K(1984K), 0.0016854 secs]

Heap after GC invocations=1 (full 0):
   -- 1 GCs (Minor and Major) have been performed
   -- 0 Major (referred as full here) GCs have been performed
 def new generation   total 960K, used 64K [...
  eden space 896K,   0% used [...
  from space 64K, 100% used [...
  to   space 64K,   0% used [...
 tenured generation   total 1024K, used 692K [...
   the space 1024K,  67% used [...
 Metaspace used 1555K, capacity 2242K, committed 2368K, reserved 4480K
}
   -- The Minor GC moved 64K of objects to the "from" space from "eden",
   -- and 832K of objects to the "tenured" generation
...

{Heap before GC invocations=1 (full 0):
 def new generation   total 960K, used 865K [...
  eden space 896K,  89% used [...
  from space 64K, 100% used [...
  to   space 64K,   0% used [...
 tenured generation   total 1024K, used 692K [...
   the space 1024K,  67% used [...
 Metaspace used 1555K, capacity 2242K, committed 2368K, reserved 4480K
   -- The "eden" space is almost full, 98%. Time for Minor GC again.

1.126: [GC (Allocation Failure) 1557K->1540K(2500K), 0.0027685 secs]
1.129: [Full GC (Allocation Failure) 1540K->1540K(2500K), 0.0031179 secs]
   -- Minor GC is not enough. Time for Major GC

Heap after GC invocations=2 (full 1):
   -- 2 GCs (Minor and Major) have been performed
   -- 1 Major GCs have been performed
 def new generation   total 1216K, used 0K [...
  eden space 1088K,   0% used [...
  from space 128K,   0% used [...
  to   space 128K,   0% used [...
 tenured generation   total 2568K, used 1539K [...
   the space 2568K,  59% used [...
 Metaspace used 1555K, capacity 2242K, committed 2368K, reserved 4480K
}
   -- Heap size was expanded during the GC
...

Notes on the output:

Table of Contents

 About This Book

 Heap Memory Area and Size Control

JVM Garbage Collection Logging

 Garbage Collection Demo Program

 Garbage Collection Logging Options

 "-XX:+PrintGC" - GC Logging Option for Short Messages

 "-XX:+PrintGCDetails" - Option for Detailed GC Messages

 "-XX:+PrintGCDateStamps" - Calendar Timestamp on GC Messages

 "-XX:+PrintGCApplicationStoppedTime" - Application Pause Durations

 "-XX:+PrintGCApplicationConcurrentTime" - Application Running Durations

"-XX:+PrintHeapAtGC" - Print Heap Summary per GC

 "-XX:+PrintTenuringDistribution" - Tunuring Distribution

 "-XX:+PrintReferenceGC" - Reference Counts per GC

 "-XX:+PrintFlagsFinal" - Print JVM Options

 Introduction of Garbage Collectors

 Serial Collector - "+XX:+UseSerialGC"

 Parallel Collector - "+XX:+UseParallelGC"

 Concurrent Mark-Sweep (CMS) Collector - "+XX:+UseConcMarkSweepGC"

 Garbage First (G1) Collector - "+XX:+UseG1GC"

 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

 Garbage Collection Performance Test Summary

 Archived Tutorials

 References

 Full Version in PDF/EPUB