线程总是在增加

时间:2016-09-06 19:50:55

标签: smartfoxserver smartfox

我刚刚安装了SmartFoxServer。

Dashboard中线程池中的线程计数在重新启动Sfs后不断增加,并且在下次重新启动之前不会再次减少。如果我增加了线程池限制,则线程数会增加到该限制。

任何扩展程序或服务尚未运行,并且线程数在10分钟内增加到1232。所以这看起来不像是内存泄漏,因为不涉及扩展代码,只需简单的SmartFox。

我已尝试过2.9版本,但结果并没有改变。

在没有运行扩展名的情况下,什么可能导致Sfs线程出现这种行为?

2 个答案:

答案 0 :(得分:1)

你有内存泄漏。

  

»内存泄漏

     

在Java中,当内存中的对象未释放时,会发生内存泄漏   即使应用程序本身不再需要它们。普通的   示例是未从事件中删除的未使用事件侦听器   源。

     

如果程序不断添加新的侦听器对象但从未被删除   那些不再使用的,我们最终会有很多   记忆浪费。 GC将无法重新获得此类内存,因为   仍然引用了未使用的侦听器。如果这些物体不断堆积   我们将看到可能最终导致的逐步性能下降   JVM崩溃。

     

内存泄漏并不总是非常明显,潜伏在代码中   在他们被发现之前已经有一段时间了。在其他情况下   泄漏可能会很快变得非常讨厌,从而造成严重的飙升   记忆的使用,最终导致过程的死亡   来源http://docs2x.smartfoxserver.com/AdvancedTopics/troubleshooting-live-server#mem

答案 1 :(得分:0)

一个好的开始是尝试确定所有线程是什么。您可以使用jstack(包含在JDK中)来获取所有线程的堆栈转储,这些堆栈转储应该可以帮助您发现它们的用途,并希望如何减少它们的数量。

jstack -l JAVA_PID > jstack.out