有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

多线程Java线程不断累积

我目前正试图了解我的Java应用程序发生了什么,下面是场景

1-应用程序启动(稳定在259-260个线程)

2-有些时间过去了(不是固定的长度,有时是12小时,有时是2分钟)

3-发生了一些事情,但没有抛出错误,没有特定的线程停止工作

4-新线程开始堆积,我每0.7秒左右创建一个新线程,它是从一个事件触发的。(通常它们在不到一秒钟的时间内被处理和自动清洗)在这一点上,我们可以很容易地看到线程数上升,而且它们从未停止。(手动关闭前,上一个日志达到1170个线程)

5-从线程开始堆叠的那一点开始,应用程序的一半停止工作,新线程仍然被触发,但根本没有被处理

我想知道是什么导致垃圾收集器停止/中断,可能是主线程被锁定?可能是JVM错误?在整个过程中,GC从未直接接触过,它一直按预期工作,直到“事情”发生

If you ask me, what is that "thing", I don't really know, debug shows everything flowing fine except the fact that the new threads are not FULLY parsed. (It reaches the debug code but the rest?)

提前谢谢


共 (1) 个答案

  1. # 1 楼答案

    经过16小时的连续测试,答案是固定线程池

    感谢Makoto谈论他们。似乎每700ms手动创建一个线程可能会以某种方式使JVM崩溃,有一个固定的线程池,限制线程数,使其恢复正常