如何解决tomcat内存泄漏警告 - Web应用程序已启动一个线程但未能将其停止

时间:2017-07-04 12:43:02

标签: java tomcat memory-leaks asynchttpclient

我正在使用com.ning.async-http-client(1.9.40)库发布异步请求。关闭tomcat时,我收到了catalina.out日志中的消息: -

SEVERE: The web application [/xyz] appears to have started a thread named [Hashed wheel timer #1] but has failed to stop it. This is very likely to create a memory leak.
Jul 03, 2017 1:27:15 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
SEVERE: The web application [/xyz] appears to have started a thread named [New I/O worker #1] but has failed to stop it. This is very likely to create a memory leak.
Jul 03, 2017 1:27:15 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
SEVERE: The web application [/xyz] appears to have started a thread named [New I/O worker #2] but has failed to stop it. This is very likely to create a memory leak.
Jul 03, 2017 1:27:15 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
SEVERE: The web application [/xyz] appears to have started a thread named [New I/O boss #3] but has failed to stop it. This is very likely to create a memory leak.
Jul 03, 2017 1:27:15 PM org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads
SEVERE: The web application [/xyz] appears to have started a thread named [Hashed wheel timer #2] but has failed to stop it. This is very likely to create a memory leak.**

这些主题的状态是:

"New I/O boss #3" prio=10 tid=0x00007ff3a00f9000 nid=0x17a9 runnable [0x00007ff3878f7000]
"New I/O worker #2" daemon prio=10 tid=0x00007ff3a00aa800 nid=0x17a8 runnable [0x00007ff3879f8000]
"New I/O worker #1" daemon prio=10 tid=0x00007ff3a00b8800 nid=0x17a7 runnable [0x00007ff387af9000]
"Hashed wheel timer #2" prio=10 tid=0x00007ff3a020e800 nid=0x17aa waiting on condition [0x00007ff3875f0000]
"Hashed wheel timer #1" prio=10 tid=0x00007ff3a0083000 nid=0x17a6 sleeping[0x00007ff387bfa000]

请建议一种从应用程序中停止这些线程的方法。

1 个答案:

答案 0 :(得分:0)

Closeable实施close()。当您的应用程序关闭时,只需在其上调用AsyncHttpClient即可。

这将清除public static void main(String[] args) throws Exception { AsyncHttpClient asyncHttpClient = new AsyncHttpClient(); Future<Response> f = asyncHttpClient.prepareGet("http://www.google.com/").execute(); Response r = f.get(); asyncHttpClient.close(); // when this is commented out, the application won't exit, as the non daemon threads prevent it. } 使用的资源。

举例说明:

{{1}}