我打算使用Spring的ThreadLocalTargetSource
来访问我的Web应用程序和Web服务应用程序的用户上下文。
我已经在网上浏览了一段时间,我看到的只是关于内存泄漏的可怕结果。我看到ThreadLocalTargetSource
实现已经有一个destroy
方法可以清除并使threadlocal对象无效。我相信这一切都很好。那么当Spring以正确的方式处理它时,为什么我们会出现内存泄漏?我们需要明确做些什么吗?
答案 0 :(得分:0)
使用不是一个很大的伤害,但必须要小心。
正如API文档所暗示的那样,每个线程都将拥有其目标副本,并且可能存在少量线程绑定对象,这些对象可能在内存中直到应用程序实际关闭。
API语句只是暗示这个类必须要特别小心,尽管string提供了destroy方法使该对象可用于GC。否则,使用起来非常好。
如果要使用ThreadLocal,请为每个请求周期取消设置对象。
请参阅以下指向博客和API文档的链接
http://tigrou.nl/2009/05/09/springs-threadlocaltargetsource/