我遇到了一个应用程序问题。当我长时间运行它时,CPU负载会缓慢增加。以下是Java VisualVM的截图,持续了45分钟。
如您所见,内存使用非常稳定,线程数量也是如此。该应用程序打开一个局域网套接字并每2秒钟进行一次测量。这个测量在一个单独的线程中运行(可以在右下方的线程图中看到)。
CPU使用率缓慢但肯定地增加,过夜后积累到70-80%左右,此时整个系统明显减速。现在我当然不希望出现这种增加,但找不到原因。没有内存泄漏(这将导致内存持续增加),我也不会产生越来越多的线程(因为计数也是稳定的)。
我的应用程序有一个广泛的GUI和几个线程。以下是分析器的线程列表:
我用黄色标记了“我的”线程。因此,MeasurementCommunication.startMeasurement线程在需要时创建(并再次终止)。因此,任何时候都只有其中一个人在运行。
长话短说:我不知道这个CPU增加来自哪里。您有任何想法吗?也许这是一个普遍的Java问题?
如果您需要更多信息或细节,请告诉我,我会尝试回答它们。 ;)
如您所见,内存使用非常稳定,线程数量也是如此。该应用程序打开一个局域网套接字并每2秒钟进行一次测量。这个测量在一个单独的线程中运行(可以在右下方的线程图中看到)。
CPU使用率缓慢但肯定地增加,过夜后积累到70-80%左右,此时整个系统明显减速。现在我当然不希望出现这种增加,但找不到原因。没有内存泄漏(这将导致内存持续增加),我也不会产生越来越多的线程(因为计数也是稳定的)。
我的应用程序有一个广泛的GUI和几个线程。以下是分析器的线程列表:
我用黄色标记了“我的”线程。因此,MeasurementCommunication.startMeasurement线程在需要时创建(并再次终止)。因此,任何时候都只有其中一个人在运行。
长话短说:我不知道这个CPU增加来自哪里。您有任何想法吗?也许这是一个普遍的Java问题?
如果您需要更多信息或细节,请告诉我,我会尝试回答它们。 ;)