【发布时间】:2012-05-12 00:11:24
【问题描述】:
我在 Tomcat 中遇到线程本地内存泄漏错误,我正在使用 ThreadPool,但在我的 web 应用程序中没有实现 ThreadLocal。
严重:Web 应用程序 [/myWebApp] 创建了一个 ThreadLocal,其键类型为 [org.a pache.http.impl.cookie.DateUtils$DateFormatHolder$1](值 [org.apache.http.imp l.cookie.DateUtils$DateFormatHolder$1@4c2849]) 和类型为 [java.lang.re f.SoftReference] (值 [java.lang.ref.SoftReference@1e67280])但未能 rem 当 Web 应用程序停止时就停止使用它。线程将被更新 是时候尝试避免可能的内存泄漏了。
我不明白为什么我没有实现线程本地错误?我想摆脱这些消息,所以我搜索了网络,并在here 中写道,为了清理我需要使用的线程本地:
ThreadLocal.remove()
但我没有 ThreadLocal 的实现。如果有人告诉我一个方法,我将不胜感激。
【问题讨论】:
-
您可能正在您的应用程序中创建线程。当 servlet 关闭/重新启动时,您是否尝试过销毁/清理它们?通常不建议在 JEE 环境中自己启动 Threads,而是使用 Quartz 之类的框架
-
是的,我正在创建线程,但我正在将它们添加到池中。完成后,我关闭了线程池执行程序。
标签: java tomcat thread-local threadpool