[英]The web application appears to have started a thread named but has failed to stop it. This is very likely to create a memory leak
[英]A web application appears to have started a thread named [22] but has failed to stop it. This is very likely to create a memory leak
我有一个Web应用程序,后端使用Servlet部署在tomcat上。 该应用程序是简单的Java应用程序
我经常在服务器日志中看到这个错误:严重:Web应用程序似乎已经启动了一个名为[22]但未能阻止它的线程。 这很可能造成内存泄漏。
是否有可能导致它的潜在原因?
我将使用visualvm 1.3.2并查看正在创建的线程。 一定要添加所有插件。
如果您的代码没有完成,您将无法控制它。
您也不知道该消息是否是红鲱鱼。 在一段时间内对代码进行负载测试并测量发生的情况。
我最近遇到过类似的情况在下面的步骤中解决了
- 我接受了Thread dump。 (使用Kill -QUIT pid)
- 找到Runnable / Thread类表单转储
- 然后我在run方法中放入一个调试点,并在调试模式下启动应用程序。
- 得到启动My Thread的代码,我发现它在停止应用程序时没有停止。
- 引入代码来停止AppContextListener的contextDestroyed方法中的线程(这是我的应用程序类,它扩展了ServletContextListener),因为当我停止tomcat时将调用此方法。
如果你将Thread设置为Dameon Thread它不会有帮助,你可以访问解释 。
Tomcat等待所有应用程序的线程(用户线程不是守护程序线程)在它关闭之前停止,我想在你的情况下这个特定的线程是用户线程,因此tomcat生成了这个错误。 我建议你把这个线程改成守护进程(假设这个是你的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.