I found a GC problem in my application, young GC suddenly becomes 10 times as much as normal which result of a small size of eden region. Through the gc log, I found than eden size become 5000M-7000M usually while it keeped 528M when falled into problems. I don't know what happend cause such problem. I have read a lot of blogs to research the algorithm that adjust the eden region size, and most of the blog just tell me than the eden region size is automatically changed according to previous gc pause time. only a vaguely answer is found in https://product.hubspot.com/blog/g1gc-fundamentals-lessons-from-taming-garbage-collection,
if (recent_STW_time < MaxGCPauseMillis)
eden = min(100% - G1ReservePercent - Tenured, G1MaxNewSizePercent)
else
eden = min(100% - Tenured, G1NewSizePercent)
But according to this, eden region size should be 4000-6500M in my application.