我确实遇到了我开发的应用程序的问题。当我长时间运行时,CPU负载缓慢上升。这是45分钟后Java VisualVM的屏幕截图。
正如您所看到的,内存使用量非常稳定,并且线程数也是如此。应用程序打开一个LAN插槽,每2秒进行一次测量。该测量在单独的线程中运行(可以在右下方的线程图中看到)。
CPU使用率增长缓慢但肯定会在一夜之间累积到70-80%左右,此时整个系统显然会放慢速度(显然)。现在我不希望这种增加当然但找不到它的原因。没有内存泄漏(这也会导致内存不断增加),也不会产生越来越多的线程(因为这个数量也很稳定)。
我的应用程序有广泛的GUI和几个线程。以下是分析器的线程列表:
我将“我的”线标记为黄色。因此,只要需要,就会创建(并再次终止)MeasurementCommunication.startMeasurement
个线程。所以这些家伙中只有一个人随时都在跑。
简而言之:我不知道这个CPU增长的来源。你有什么想法?也许这是一般的Java问题? 如果您需要更多信息或详细信息,请告诉我并尝试回答。 ;)
答案 0 :(得分:3)
只要看一下你用过的堆,就会从17:00开始向上看,你需要做的就是把它捕获更长的时间并确保它能够向上爬回来并保持上升/下降但是通常是平面使用,如果它开始产生类似步骤的结果,即进一步向上递增,那么它可能是内存泄漏导致问题然后影响你的cpu。所以简而言之,你需要特别是在堆爬的时候观察它。所以每个完整的垃圾收集之间的状态....