【发布时间】:2013-07-23 11:16:07
【问题描述】:
我正在用 java 开发一个软件,它在接收到事件(来自传感器)时创建一个线程。这些线程的生存时间非常短(
传感器发送最多 10 个事件/分钟。
这个应用程序大部分时间都可以正常工作。但有时它会挂起。
在查看eclipse调试器时,我发现有很多线程,其中大多数是"Thread[garbage collected]"(大约800个线程@_@)
我不知道该错误是由我的代码中的动态创建线程还是其他错误引起的?
EDIT:
该问题确实是由创建太多线程引起的。我已经用时间戳记录了所有传感器的事件,并且它创建了一些关于 1200 events/minute 的点(该死!)。
我还编写了一个小型 Java 程序,它可以创建尽可能多的线程。在~4100th thread(嗯,木制电脑),jvm 崩溃。它不像我的应用程序那样挂起:-?。
因此,我认为在动态创建线程时存在(可能)罕见的情况并导致垃圾收集线程挂起?
【问题讨论】:
-
为什么选择Dropbox而不是单纯的图片上传?在工作中,我们无法访问 Dropbox
-
@Karna:问题的图片上传仅在具有一定声誉的情况下可用。
-
如果您在 Eclipse 中运行测试,有可能一些线程在失败的测试运行结束后仍然存在,因此是之前的测试运行遗留下来的。除了测试运行线程之外,您是否真的很小心地让所有线程都成为守护线程?
标签: java multithreading garbage-collection