Java程序在一段时间后减速

时间:2016-02-14 22:51:07

标签: java performance

我正在使用一个进行模拟的Java应用程序,但在大约30分钟后,它每秒可以完成一半的模拟。

模拟只是数字。结果是缓冲,我使用Apache POI库写入excel文件,输出应该是excel中大约500k行的15列,它在所有模拟完成后写入。

运行它的PC运行速度快,冷却效果好,所以我不认为它是热量限制的。

可能导致经济放缓的原因是什么? (我不确定哪些信息很重要,如果你需要知道一些事情只是问)

  • 温度:35-45度
  • CPU利用率:70-75%
  • 内存利用率:6400MB / 16333MB

1 个答案:

答案 0 :(得分:2)

根据对情况的描述,我会声称JVM受到有限资源(很可能是内存)的困扰,并且由于越来越长且越来越频繁的GC暂停而陷入困境。您可以通过为JVM指定以下启动参数来记录GC暂停来验证我的直觉是否正确:

-XX:+ PrintGCTimeStamps -XX:+ PrintGCDateStamps -XX:+ PrintGCDetails -Xloggc:

现在,如果猜测是正确的,您可以继续了解实际导致这些长暂停的原因,是内存泄漏还是堆中不必要的大数据结构。为此,我建议你带一个Java monitoring tool called Plumbr试用版来查看内存中的内容。根据暴露的数据,您可以看到内存中的内容。

完全披露,我隶属于Plumbr。