我在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构造函数上设置断点。

10-02 02:39
查看更多