如何阻止org.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严重:Web应用程序[/ test]创建了一个类型为[java.lang.ThreadLocal]的键的ThreadLocal(值[java.lang . ThreadLocal @ 71513074])和类型为[io.netty.util.internal.InternalThreadLocalMap]的值(值[io.netty.util.internal.InternalThreadLocalMap@4aecc2e8])但在Web应用程序停止时无法将其删除 . 线程将随着时间的推移而更新,以避免可能的内存泄漏 .

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

回答(1)

2 years ago

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