0

我们有一个在 Ubuntu Server 12.04 和 java 上运行的应用程序。

java -版本返回:

java版本“1.7.0_40”

Java(TM) SE 运行时环境 (build 1.7.0_40-b43)

Java HotSpot(TM) 64 位服务器 VM(内部版本 24.0-b56,混合模式

我们还有其他具有相同技术但没有问题的应用程序。

服务器信息:内存:2G 操作系统:Ubuntu Server 12.04 Nb CPU:2

应用程序语言是 scala。

运行一段时间后,JVM 似乎进入休眠状态。一个 CPU 继续以 100% 的速度旋转。

JVM 选项:

-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintTenuringDistribution -XX:-DisableExplicitGC -XX:CMSFullGCsBeforeCompaction=1 -XX:+CMSClassUnloadingEnabled -XX:+CMSIncrementalMode -XX:MaxGCPauseMillis=1500 -XX:GCTimeRatio=9 -XX:CMSInitiatingOccupancyFraction=50 -XX:-UseGCOverheadLimit -XX:MaxHeapFreeRatio=60

使用 jstat -gcutil [PID],我看到 FGC 增长很快。

你有这个问题的想法吗?

谢谢

4

1 回答 1

0

你有这个问题的想法吗?

它可以是任何数量的东西。但是(IMO)最可能的解释是您的应用程序中有一个错误,表现为无限循环。

将调试器附加到 JVM。或者,如果您不能这样做,请向其发送必要的信号以使其生成一个线程转储到控制台输出流。然后分析转储,看看是否能得到任何线索。

这不是那种我们可以给你一个神奇的答案的问题。您很可能需要根据您对应用程序的了解以及您自己在分析/调试方面的辛勤工作来自己解决这个问题。(这是 Scala 的事实意味着这也可能是 Scala 编译器或运行时中的错误。)

于 2013-10-07T12:36:31.787 回答