【问题标题】:How to stop threads created by org.asynchttpclient to prevent memory leak?如何停止 org.asynchttpclient 创建的线程以防止内存泄漏?
【发布时间】:2017-07-04 15:43:20
【问题描述】:

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

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

【问题讨论】:

    标签: java tomcat memory-leaks asynchttpclient


    【解决方案1】:

    这实际上更像是一个警告,在大多数情况下可以忽略。重新加载或关闭上下文时,您将看到此错误。如果您要关闭服务器,则 JVM 也将关闭,操作系统将清理所有内存。
    如果您想尝试在实现ClosableAsyncHttpClient 上调用close,它可能会停止此问题。您可能必须在那里等待以使其完全关闭连接工厂。您可以查看 tomcat Lifecycle 以添加关闭处理程序来处理关闭客户端。

    【讨论】:

      猜你喜欢
      • 2013-10-15
      • 1970-01-01
      • 2010-12-20
      • 2012-02-03
      • 2010-09-21
      • 2015-02-05
      • 1970-01-01
      相关资源
      最近更新 更多