如何阻止org.asynchttpclient创建的线程以防止内存泄漏?

时间:2017-07-04 15:43:21

标签: java tomcat memory-leaks asynchttpclient

我正在使用org.asynchttpclient发布异步请求。

关闭tomcat时,我收到了以下日志:

  

严重:Web应用程序[/ test]似乎已经启动了一个名为[pool-1-thread-1]的线程但未能阻止它。这很可能会造成内存泄漏   2017年7月4日上午10:53:00 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads

     

严重:Web应用程序[/ test]似乎已经启动了一个名为[AsyncHttpClient-2-1]但未能阻止它的线程。这很可能会造成内存泄漏   2017年7月4日上午10:53:00 org.apache.catalina.loader.WebappClassLoaderBase clearReferencesThreads

     

严重:Web应用程序[/ test]似乎已经启动了一个名为[AsyncHttpClient-2-2]但未能阻止它的线程。这很可能会造成内存泄漏   2017年7月4日上午10:53:00 org.apache.catalina.loader.WebappClassLoaderBase checkThreadLocalMapForLeaks

     

SEVERE:Web应用程序[/ test]创建了一个ThreadLocal,其键为[java.lang.ThreadLocal](值为[java.lang.ThreadLocal@71513074]),类型为[io.netty.util。 internal.InternalThreadLocalMap](值[io.netty.util.internal.InternalThreadLocalMap@4aecc2e8])但在Web应用程序停止时无法将其删除。线程将随着时间的推移而更新,以避免可能的内存泄漏。

如何关闭这些线程以防止内存泄漏。

1 个答案:

答案 0 :(得分:1)

这实际上是一个警告,在大多数情况下都可以忽略。重新加载或关闭上下文时,您将看到此错误。如果您正在关闭服务器,那么JVM也将被关闭,操作系统将清理所有内存 如果您想尝试在实现AsyncHttpClient的{​​{1}}上调用close,则可能会停止此问题。您可能需要在那里等待让它完全关闭连接工厂。您可以查看tomcat生命周期以添加关闭处理程序来处理关闭客户端。