我在Tomcat中收到线程本地内存泄漏错误,并且正在使用ThreadPool,但在我的webapp中没有ThreadLocal的实现。
严重:Web应用程序[/ myWebApp]创建了一个密钥类型为[org.a]的ThreadLocal。
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]),但无法删除
在Web应用程序停止时进行操作。线程将被更新
有时间尝试避免可能的内存泄漏。
我不明白的是,为什么我没有实现它,但是却出现了线程局部错误?我想摆脱这些消息,所以我搜索了网络,在here中写道,为了清理threadlocal,我需要使用:
ThreadLocal.remove()
但是我没有ThreadLocal的实现。如果有人向我展示一种方法,我将不胜感激。
最佳答案
显然,正在创建该/那些ThreadLocal实例。如果不是您的代码,则它必须是您正在使用的某些库,或者(可能是)Tomcat本身。
我将从研究可能正在创建的实例开始
org.apache.http.impl.cookie.DateUtils$DateFormatHolder$1
(顺便说一下,这是
DataUtils
的嵌套类中的一个匿名类...因此,除非出现奇怪的情况,否则创建将在DateUtils.java
文件中进行。)如果检查源代码无济于事,请尝试调试Tomcat实例并在ThreadLocal构造函数上设置断点。