Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否有可能(以及如何)找出是哪个类在Java中创建了命名线程?_Java_Multithreading_Tomcat - Fatal编程技术网

是否有可能(以及如何)找出是哪个类在Java中创建了命名线程?

是否有可能(以及如何)找出是哪个类在Java中创建了命名线程?,java,multithreading,tomcat,Java,Multithreading,Tomcat,在Ubuntu 12.04 64位版本的Tomcat 7中,我遇到以下错误: 严重:web应用程序[/MyApplication]似乎已启动名为[AS400读取守护程序[system:mysystem:093048/QUSER/QZDASOINIT]的线程,但未能停止该线程。这很可能会造成内存泄漏 我想找出是什么创建了这个线程,这样我就可以知道如何停止它。如果有帮助的话,我可以用jdb连接到Tomcat 您可以安装自己的日志安全管理器(它记录创建线程权限的堆栈),但默认情况下不会记住该信息(只有

在Ubuntu 12.04 64位版本的Tomcat 7中,我遇到以下错误:

严重:web应用程序[/MyApplication]似乎已启动名为[AS400读取守护程序[system:mysystem:093048/QUSER/QZDASOINIT]的线程,但未能停止该线程。这很可能会造成内存泄漏


我想找出是什么创建了这个线程,这样我就可以知道如何停止它。如果有帮助的话,我可以用jdb连接到Tomcat

您可以安装自己的日志安全管理器(它记录创建线程权限的堆栈),但默认情况下不会记住该信息(只有父线程组和访问控制上下文,除非被覆盖)

另一种选择是使用BTrace之类的工具来创建线程(记录调用站点)。但这在事后是不可能的,需要一些设置

也许它有助于定期线程转储您的系统,并查看有问题的线程所使用的代码


线程的名称听起来很像IBM iSeries的JTOpen工具箱(TAFKA AS/400)。

您可能可以搜索该名称。它必须被设置在某个地方。我不认为你能真正发现是什么创建了线程,甚至是线程的开始。因为你可以在一个地方创建一个线程,然后从一个完全不同的地方开始。一旦开始做自己的事情,就不必拘泥于开始做的事情。正如Brodo提到的,搜索名称“Read Daemon”可能是最好的选择。另请参见@BrodoFraggins我在源代码中添加了灰色,但没有运气。我的最佳猜测是这就是源代码,但我不确定为什么它没有关闭。我们的应用程序有点大,而且设计得不太好。它听起来确实像一个非封闭的数据库连接/语句。QZDASOINIT作业与正常的ODBC服务相关。是否有我可以搜索的内容可能导致我找到丢失的close?嗯,Driver#getConnection()/close()或AS400#connect()/disconnect()应该是两个资源最密集的调用。