我正在使用Java开发软件,它会在接收到传感器事件时创建一个线程。这些线程的生存期非常短(<1秒)。传感器每分钟发送不超过10个事件。
这个应用程序大部分时间都运行良好,但有时会出现挂起的情况。
当我查看Eclipse调试器时,我发现有太多线程,其中大部分线程是"Thread[garbage collected]"(大约800个 @_@)。
我不知道这个bug是否是由于我的代码中动态创建线程还是其他bug引起的?
问题确实是由创建过多的线程引起的。我已经记录了所有传感器事件的时间戳,并发现有一些点它每分钟产生大约1200个事件(该死!)。 我还编写了一个小的Java程序,尽可能地创建了许多线程。在第~4100个线程(好木头电脑)时, JVM崩溃了。它没有像我的应用程序那样挂起 :-?。 因此,我认为可能存在动态创建线程时出现罕见条件,并导致垃圾回收线程挂起的情况?
这个应用程序大部分时间都运行良好,但有时会出现挂起的情况。
当我查看Eclipse调试器时,我发现有太多线程,其中大部分线程是"Thread[garbage collected]"(大约800个 @_@)。
我不知道这个bug是否是由于我的代码中动态创建线程还是其他bug引起的?
编辑:
问题确实是由创建过多的线程引起的。我已经记录了所有传感器事件的时间戳,并发现有一些点它每分钟产生大约1200个事件(该死!)。 我还编写了一个小的Java程序,尽可能地创建了许多线程。在第~4100个线程(好木头电脑)时, JVM崩溃了。它没有像我的应用程序那样挂起 :-?。 因此,我认为可能存在动态创建线程时出现罕见条件,并导致垃圾回收线程挂起的情况?