我正在研究Java应用程序中的性能问题。我们已经缩小到定期非常昂贵的垃圾收集。该应用程序做非常频繁的YoungGen垃圾收集(稍微多于每分钟一次),但通常小于0.5秒。然而,在某些情况下,我们会遇到一两个小时,其中收集时间高于20秒,在某些情况下高达160秒。分析gc日志,除了时间长的情况之外,在这些情况下似乎有所不同的是在内核模式(系统时间的大值)中花费的时间的很大一部分。垃圾收集的哪些部分需要系统时间?
什么原因导致在内核模式下花费时间?服务器运行Java 1.6.0_45,其中-Xms5704m -Xmx5704m
和-XX:+UseParallelOldGC
。
你的问题是关于什么时候*一般*花费在内核模式?另外,您使用的是哪种JRE? – Chandranshu
@Chandranshu:是的,GC期间系统时间很长的原因。我们正在运行Oracle JRE。 – carlpett