![](/img/trans.png)
[英]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.