Young GCs make Metaspace grow, not the old gene

I started to see frequent Full GC (with higher GC latency) when migrating to JDK 8 from JDK7. After analyzing gc, it turned out that after the young GC, the use of the metaprocess increases, while the use of the old generation remains the same. I set the max metaspace size (equal to Perm Gen in JDK7) to 256MB. A full GC is triggered when the usage reaches 210MB. I tried setting the max metaspace size to 512MB, then also see Metaspace Threshold resulting in Full GC.

Why is Young GC causing metastasis to grow?

GC latency picks up JDK8. GC latency was typically less than 100ms when using JDK7, while it reached 800-1000ms for Full GC with JDK8. This affects the performance of my application. I am using Parallel GC algorithm. I suspect GC on metaspasm is much more labor intensive than the old GC gene. Any suggestions on JVM setup for JDK8 would be very helpful.

Young GC:

S0     S1     E    O     M      CCS   YGC  GCT  FGC  FGCT  GCT  LGCC      GCC 
0.00  40.28 99.78 21.95  56.28   -    149 6.647  2  3.276 9.924 Allocation Failure   No GC 
54.17 0.00  0.66  21.95  57.63   -    150 6.661  2  3.276 9.937 Allocation Failure   No GC

      

Full GC:

0.00  72.80   0.00  25.15  82.51      -    213    8.550     3    3.276   11.826 Metadata GC Threshold Metadata GC Threshold 
0.00  72.80   0.00  25.15  82.51      -    213    8.550     3    3.276   11.826 Metadata GC Threshold Metadata GC Threshold 

      

Metaspace used 216684K, power 262051K, perfect 262144K, reserved 262144K 2015-06-30T17: 47: 16.079 + 0000: 17622.342: [Full GC (Metadata GC Threshold) [PSYoungGen: 9550K-> 0K (1035776K)]

+3


source to share





All Articles