Java8:G1GC备注阶段的类卸载耗时过长



我们有一个Java 8 web服务,它使用18GB和其他默认JVM配置。GC暂停时间短且正常。但在GC备注阶段,类卸载需要花费大量时间(见下文(。这导致客户端会话断开连接。我们如何配置GC以减少类卸载时间,或将时间分为多个阶段

2020-04-21T15:14:15.672+0000: 8165.746: [GC concurrent-root-region-scan-start]
2020-04-21T15:14:15.703+0000: 8165.778: [GC concurrent-root-region-scan-end, 0.0326298 secs]
2020-04-21T15:14:15.703+0000: 8165.778: [GC concurrent-mark-start]
2020-04-21T15:14:16.032+0000: 8166.102: [GC concurrent-mark-end, 0.3238259 secs]
2020-04-21T15:14:16.032+0000: 8166.106: [GC remark 2020-04-21T15:14:16.032+0000: 8166.106: [Finalize Marking, 0.0011369 secs] 2020-04-21T15:14:16.032+0000: 8166.107: [GC ref-proc, 0.0071566 secs] 2020-04-21T15:14:16.047+0000: 8166.114: [**Unloading, 59.0294601 secs**], 59.0400411 secs]
[Times: user=1.45 sys=0.38, real=59.04 secs] 
2020-04-21T15:15:15.076+0000: 8225.150: [GC cleanup 2860M->1308M(18G), 0.2443660 secs]
[Times: user=0.19 sys=0.05, real=0.25 secs] 

这是由类卸载引起的。请尝试添加-XX:-ClassUnloading

最新更新