Azul JDK Zulu 8 G1 Evacuation Pause
PS C:\zulu-8\bin> .\java.exe -version
openjdk version "1.8.0_402"
OpenJDK Runtime Environment (Zulu 8.76.0.17-CA-win64) (build 1.8.0_402-b06)
OpenJDK 64-Bit Server VM (Zulu 8.76.0.17-CA-win64) (build 25.402-b06, mixed mode)
2024-02-18T10:32:15.844+0000: 1.894: [GC pause (G1 Evacuation Pause) (young), 0.0051386 secs]
[Parallel Time: 1.8 ms, GC Workers: 8]
[GC Worker Start (ms): Min: 1894.3, Avg: 1894.3, Max: 1894.4, Diff: 0.1]
[Ext Root Scanning (ms): Min: 0.1, Avg: 0.3, Max: 0.5, Diff: 0.3, Sum: 2.0]
[Update RS (ms): Min: 0.0, Avg: 0.0, Max: 0.1, Diff: 0.1, Sum: 0.2]
[Processed Buffers: Min: 0, Avg: 1.5, Max: 3, Diff: 3, Sum: 12]
[Scan RS (ms): Min: 0.0, Avg: 0.1, Max: 0.2, Diff: 0.2, Sum: 0.4]
[Code Root Scanning (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Object Copy (ms): Min: 1.1, Avg: 1.2, Max: 1.2, Diff: 0.2, Sum: 9.3]
[Termination (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.0]
[Termination Attempts: Min: 1, Avg: 3.1, Max: 5, Diff: 4, Sum: 25]
[GC Worker Other (ms): Min: 0.0, Avg: 0.0, Max: 0.0, Diff: 0.0, Sum: 0.1]
[GC Worker Total (ms): Min: 1.4, Avg: 1.5, Max: 1.6, Diff: 0.2, Sum: 12.1]
[GC Worker End (ms): Min: 1895.9, Avg: 1895.9, Max: 1895.9, Diff: 0.0]
[Code Root Fixup: 0.0 ms]
[Code Root Purge: 0.0 ms]
[Clear CT: 0.2 ms]
[Other: 3.1 ms]
[Choose CSet: 0.0 ms]
[Ref Proc: 2.5 ms]
[Ref Enq: 0.2 ms]
[Redirty Cards: 0.2 ms]
[Humongous Register: 0.0 ms]
[Humongous Reclaim: 0.0 ms]
[Free CSet: 0.0 ms]
[Eden: 30720.0K(30720.0K)->0.0B(73728.0K) Survivors: 2048.0K->4096.0K Heap: 35102.0K(128.0M)->7322.5K(128.0M)]
[Times: user=0.00 sys=0.00, real=0.00 secs]
When you see G1 Evacuation pause, then G1 GC does not have enough memory for either survivor or promoted objects or both. The Java heap cannot expand since it is already at its max. Below are the potential solutions to fix this problem: Increase the value of the ‘-XX:G1ReservePercent’ argument. Default value is 10%.
* [G1 Evacuation Pause - Search](https://cn.bing.com/search?q=G1+Evacuation+Pause&cvid=3a0e6d5190f64063b3b8741050c053fc&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQABhAMgYIAhAAGEAyBggDEAAYQDIGCAQQABhAMgYIBRAAGEAyBggGEAAYQDIICAcQ6QcY8gcyCAgIEOkHGPIHMgsICRDpBxj2Bxj6VTILCAoQ6QcY9gcY-lUyBwgLEEUY_FXSAQczNTlqMGoxqAIAsAIA&FORM=ANAB01&PC=U531)
* [Simple & effective Java G1 GC tuning tips – GC easy – Universal Java GC Log Analyser](https://blog.gceasy.io/2020/06/02/simple-effective-g1-gc-tuning-tips/#:~:text=When%20you%20see%20G1%20Evacuation%20pause%2C%20then%20G1,of%20the%20%E2%80%98-XX%3AG1ReservePercent%E2%80%99%20argument.%20Default%20value%20is%2010%25.)
6.2. G1 Evacuation Pause or Evacuation Failure
When you see G1 Evacuation pause, then G1 GC does not have enough memory for either survivor or promoted objects or both. The Java heap cannot expand since it is already at its max. Below are the potential solutions to fix this problem:
- Increase the value of the ‘-XX:G1ReservePercent’ argument. Default value is 10%. It means the G1 garbage collector will try to keep 10% of memory free always. When you try to increase this value, GC will be triggered earlier, preventing the Evacuation pauses.
- Start the marking cycle earlier by reducing the ‘-XX:InitiatingHeapOccupancyPercent’. The default value is 45. Reducing the value will start the marking cycle earlier. GC marking cycles are triggered when heap’s usage goes beyond 45%. On the other hand, if the marking cycle is starting early and not reclaiming, increase the ‘-XX:InitiatingHeapOccupancyPercent’ threshold above the default value.
- You can also increase the value of the ‘-XX:ConcGCThreads’ argument to increase the number of parallel marking threads. Increasing the concurrent marking threads will make garbage collection run fast.
- If the problem persists you may consider increasing JVM heap size (i.e. -Xmx)
* [Garbage-First Garbage Collector Tuning](https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/g1_gc_tuning.html)
|
Sets the percentage of reserve memory to keep free so as to reduce the risk of to-space overflows. The default is 10 percent. When you increase or decrease the percentage, make sure to adjust the total Java heap by the same amount.Footref1 |
* [Garbage-First Garbage Collector Tuning](https://docs.oracle.com/en/java/javase/20/gctuning/garbage-first-garbage-collector-tuning.html#GUID-40B64CD4-9844-4E3E-A0BB-81556AC04C74)
* [Azul Platform Prime Memory Management](https://docs.azul.com/prime/zst/memory-management)
* [Unified Garbage Collection Logging Recommendations](https://docs.azul.com/prime/Unified-GC-Logging.html#)
* [Using Java Flight Recorder](https://docs.azul.com/prime/Java-Flight-Recorder)
* [WP-Understanding-Java-Garbage-Collection.pdf](https://www.azul.com/wp-content/uploads/WP-Understanding-Java-Garbage-Collection.pdf)
* [Java 7, 8, 11, 13, 15, 17, 19, 21 Download for Linux, Windows and macOS](https://www.azul.com/downloads/#prime)
* [g1\_survivor\_space - Search](https://cn.bing.com/search?q=g1_survivor_space&cvid=c3efaf2dcbbf49faa376a4461921b535&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQABhAMgYIAhAAGEAyBggDEAAYQDIGCAQQABhAMgcIBRBFGPxV0gEIMTEwM2owajGoAgCwAgA&FORM=ANAB01&PC=U531)
* [Garbage First Garbage Collector Tuning](https://www.oracle.com/technical-resources/articles/java/g1gc.html)
* [G1回收器的优势和不足 - 简书](https://www.jianshu.com/p/8832fd7e2289)
* [G1垃圾收集器使用注意事项\_g1 survivor 100%-CSDN博客](https://blog.csdn.net/cuiwjava/article/details/109706239)