Spring ThreadLocalTargetSource - 这有内存泄漏吗?

时间:2013-11-27 15:15:39

标签: java spring memory-leaks thread-local

我打算使用Spring的ThreadLocalTargetSource来访问我的Web应用程序和Web服务应用程序的用户上下文。

我已经在网上浏览了一段时间,我看到的只是关于内存泄漏的可怕结果。我看到ThreadLocalTargetSource实现已经有一个destroy方法可以清除并使threadlocal对象无效。我相信这一切都很好。那么当Spring以正确的方式处理它时,为什么我们会出现内存泄漏?我们需要明确做些什么吗?

1 个答案:

答案 0 :(得分:0)

使用不是一个很大的伤害,但必须要小心。

正如API文档所暗示的那样,每个线程都将拥有其目标副本,并且可能存在少量线程绑定对象,这些对象可能在内存中直到应用程序实际关闭。

API语句只是暗示这个类必须要特别小心,尽管string提供了destroy方法使该对象可用于GC。否则,使用起来非常好。

如果要使用ThreadLocal,请为每个请求周期取消设置对象。

请参阅以下指向博客和API文档的链接

http://tigrou.nl/2009/05/09/springs-threadlocaltargetsource/

http://docs.spring.io/spring/docs/2.0.x/api/org/springframework/aop/target/ThreadLocalTargetSource.html