- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我在 Tomcat 中遇到线程局部内存泄漏错误,我正在使用 ThreadPool,但我的 Web 应用程序中没有 ThreadLocal 的实现。
SEVERE: The web application [/myWebApp] created a ThreadLocal with key of type [org.a pache.http.impl.cookie.DateUtils$DateFormatHolder$1] (value [org.apache.http.imp l.cookie.DateUtils$DateFormatHolder$1@4c2849]) and a value of type [java.lang.re f.SoftReference] (value [java.lang.ref.SoftReference@1e67280]) but failed to rem ove it when the web application was stopped. Threads are going to be renewed ove r time to try and avoid a probable memory leak.
我不明白的是为什么我没有实现线程局部错误?我想摆脱这些消息,所以我搜索了网络,并在 here据记载,为了清理我需要使用的 threadlocal:
ThreadLocal.remove()
但我没有 ThreadLocal 的实现。如果有人告诉我方法,我将不胜感激。
最佳答案
显然,某事正在创建那个/那些 ThreadLocal 实例。如果它不是您的代码,那么它一定是您正在使用的某个库,或者(不太可能)Tomcat 本身。
我会先看看什么可能会创建
的实例 org.apache.http.impl.cookie.DateUtils$DateFormatHolder$1
(这是 DataUtils
中嵌套类中的匿名类,顺便说一下......所以除非发生奇怪的事情,否则创建将发生在 DateUtils.java
文件。)
如果检查源代码没有帮助,请尝试调试 Tomcat 实例并在 ThreadLocal 构造函数上设置断点。
关于java - 线程池中的线程局部内存泄漏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10415113/
我是一名优秀的程序员,十分优秀!