CPU使用率激增

use*_*546 1 java cpu multithreading

我的程序一直以最大1%的CPU使用率运行,但有时因为程序中的某些事件,我无法确定,它每100秒使用100%约5-10秒.它看起来像一个螺纹导致使用高峰,但我无法确定它的来源(有8000个类,所以这很难).很难测试问题是否仍然存在(例如在使代码的某些部分"死"之后),因为该问题有时会在虚拟机生命周期的几个小时后开始存在.

你知道什么能帮助我找到问题的根源吗?

thk*_*ala 5

如果没有更多信息,甚至无法猜测问题的原因.

我建议使用一个分析器,例如VisualVM,来确定导致问题的线程以及可能发生的确切情况.

使用分析器会告诉您例如:

  • 哪些线程处于活动状态并占用CPU资源
  • 无论是VM还是应用程序线程
  • 在垃圾收集操作上花了多少时间 - 虽然我认为最近的JVM在这方面有所改进,但GC通常是CPU使用率峰值和延迟的来源.
  • 是否存在锁定问题
  • ...