G1: Difference between revisions
No edit summary |
|||
Line 55: | Line 55: | ||
"GCLocker Initiated GC" is a collection triggered when a JNI critical region was released. Garbage collection is blocked when any thread is in the JNI Critical region. If garbage collection was requested during that period, that garbage collection is invoked after all the threads come out of the JNI critical region. | "GCLocker Initiated GC" is a collection triggered when a JNI critical region was released. Garbage collection is blocked when any thread is in the JNI Critical region. If garbage collection was requested during that period, that garbage collection is invoked after all the threads come out of the JNI critical region. | ||
==Metadata GC Threshold== | |||
"Metadata GC Threshold" is a collection triggered because the metadata space usage is over some threshold. We should not see this if ClassUnloadingWithConcurrentMark is enabled. | |||
==G1 Humongous Allocation== | |||
GC is triggered when allocating humongous object failed. | |||
==G1 Humongous Allocation== | |||
"Heap Dump Initiated GC": full gc is triggered by heap dump request. | |||
==Allocation Failure== | |||
GC is triggered to satisfy allocation failure. |
Revision as of 09:08, 16 February 2017
External
- Java 9 - The (G1) GC Awakens! http://www.infoq.com/presentations/g1-jdk-9
- Understanding G1 GC Logs https://blogs.oracle.com/poonam/entry/understanding_g1_gc_logs
- Garbage First Garbage Collector Tuning http://www.oracle.com/technetwork/articles/java/g1gc-1984535.html
- G1 Garbage Collector in Action https://plumbr.eu/blog/garbage-collection/g1-garbage-collector-in-action
Internal
Overview
Evacuation is the process of copying live data from Young regions into Survivor regions (or free regions that thus become Survivors). During an Evacuation, all application threads are stopped.
Log marker:
[GC pause (G1 Evacuation Pause) (young), 0.7919126 secs]
Eden.
Spaces:
- Young (or Eden)
- Survivor
- Old Generation
Process https://blogs.oracle.com/g1gc/entry/g1_gc_glossary_of_terms
Concepts
Evacuation
The evacuation is the process of copying live objects from one G1 region to another.
Garbage Collection Triggers
G1 Evacuation Pause
"G1 Evacuation Pause" indicates that a young or a mixed collection was triggered by a failed allocation.
System.gc()
The collection is triggered by a System.gc() call.
GCLocker Initiated GC
"GCLocker Initiated GC" is a collection triggered when a JNI critical region was released. Garbage collection is blocked when any thread is in the JNI Critical region. If garbage collection was requested during that period, that garbage collection is invoked after all the threads come out of the JNI critical region.
Metadata GC Threshold
"Metadata GC Threshold" is a collection triggered because the metadata space usage is over some threshold. We should not see this if ClassUnloadingWithConcurrentMark is enabled.
G1 Humongous Allocation
GC is triggered when allocating humongous object failed.
G1 Humongous Allocation
"Heap Dump Initiated GC": full gc is triggered by heap dump request.
Allocation Failure
GC is triggered to satisfy allocation failure.