应用程序正在使用-XX:+ UseParallelGC。 有一个GC和实时花费的时间比用户+ sys(~1.05秒)长得多: [时间:用户= 0.04 sys = 0.01,真实= 1.05秒]
以前GC的PSYoungGen正在清理相同数量的内存,而且时间要少得多。我没有任何标志启用来检查jit是否导致了这种情况。正在运行的机器上有负载,但是由与GC相同的jvm进程引起。
什么原因可能会导致类似这样的事情,以及我将来可以做些什么来弄清楚发生了什么(如果它再次发生)?
[GC
Desired survivor size 720864 bytes, new threshold 1 (max 15)
[PSYoungGen: 18864K->454K(21121K)] 38016K->17722K(64833K), 0.0224350 secs] [Times: user=0.04 sys=0.01, real=1.05 secs]
答案 0 :(得分:2)
为了能够在-XX:+PrintSafepointStatistics –XX:PrintSafepointStatisticsCount=1 -XX:+PrintGCDetails -XX:+PrintGCCause
运行for
以获得更多有用的日志,能够更好地诊断这一点。您正在使用的JVM版本也可能具有相关性。
除此之外,您还必须监控系统统计信息,主要是分页和CPU利用率,以查看其他进程或磁盘IO是否会使JVM瘫痪。