我在旧应用程序中的日志下面,我尝试使用.setName进行搜索,因为我们使用thread.setName方法设置线程名称但无法查看它。我怀疑它是由应用程序启动的,我正在搜索所有.java文件。
Jan 30, 2014 1:00:29 AM org.apache.catalina.loader.WebappClassLoader
clearReferencesThreads SEVERE: The web application [/MyWebApp] appears
to have started a thread named [Control] but has failed to stop it.
This is very likely to create a mem ory leak. Jan 30, 2014 1:00:29 AM
org.apache.catalina.loader.WebappClassLoader clearReferencesThreads
SEVERE: The web application [/MyWebApp] appears to have started a
thread named [MultiThreadedHttpConnectionManager cleanup] but has
failed to stop it.
无法理解这些线程(Control和MultiThreadedHttpConnectionManager)的起始位置,以便我可以修改代码来停止这些线程。
编辑:我的同事回答了其中的一部分,MultiThreadedHttpConnectionManager在Axis2中是BUG
当我在调试模式下运行tomcat时,我会看到一些守护程序线程和另外两个线程(main,Control)。 Control线程的命令行参数显示“org.apache.catalina.startup.Bootstrap start”。看起来tomcat正在启动这个线程,但如果是这种情况,为什么tomcat会为此提供错误日志?
答案 0 :(得分:1)
我得到了这个问题的答案和2个简单的解决方案
答案 1 :(得分:0)
如果线程通过ThreadPoolExecutor::runWorker
运行,则可以在条件task.run()
上在wt.name.equals("my-thread-name")
上放置条件断点,并进入创建线程的代码。