【发布时间】:2014-01-30 19:34:34
【问题描述】:
在当前在生产中运行的基于 BPM 的应用程序(部署在 JBOSS AS 4.2.3 中)中,注意到了一些性能问题,这是因为在峰值负载期间运行的 GC 暂停周期更长。对其进行更多分析,我发现运行 JVM 实例的 jstat 实用程序的以下输出。
/usr/jdk1.6.0-x64/bin/jstat -gccapacity 5583 NGCMN NGCMX NGC S0C S1C EC OGCMN OGCMX OGC OC PGCMN PGCMX PGC PC YGC FGC 838848.0 1677696.0 1677696.0 167744.0 167744.0 1342208.0 3355456.0 6710912.0 6710912.0 6710912.0 21248.0 524288.0 48084.0 48>208 480084.0 4826
/usr/jdk1.6.0-x64/bin/jstat -gcutil 5583 1s S0 S1 E O P YGC YGCT FGC FGCT GCT 0.00 46.33 23.11 81.23 60.38 8451 1386.335 268 159.553 1545.887 0.00 46.33 27.99 81.23 60.38 8451 1386.335 268 159.553 1545.887
在第一个命令中,(使用选项 -gccapacity)我观察到 NGC = NGCMX 和 OGC = OGCMX。这意味着,当前的旧发电容量达到最大旧发电容量,而当前新发电容量达到最大新发电容量。
我想了解一下,这可能是导致频繁执行 GC 循环并执行一些大型执行(有时需要超过 25-30 秒)的原因吗?
对于当前的解决方案,我们已将最大 JVM 堆内存从 8 GB 增加到 9 GB。但是,我们需要了解可能的原因,以便我们可以向开发团队提出同样的问题以优化应用程序。
【问题讨论】:
标签: java performance garbage-collection jvm jvm-hotspot