But the ThreadLocal only stores a single pointer. Therefore, if you  
set the pointer, forget to clear it, check into the pool and then  
check out again, once the thread comes out of the pool that pointer is  
still valid and if you replace it, they old value is available for GC.  
The leak is only as bad as the number of threads you have and what  
they are pointing to, IFF you don't release the ThreadLocal value at  
the end of the conversation with the thread. If you release  
ThreadLocal values after the end of the conversation with the thread,  
you should be fine.

Again, correct me if I'm wrong.

-bp


On Oct 1, 2008, at 11:28 AM,  wrote:

> 2008/10/1 Brian Pontarelli <[EMAIL PROTECTED]>
> Is this still true in an environment that can be configured with fixed
> thread pools such as servlet containers and such? I was under the
> impression that the Map used was keyed off the thread ID and that was
> fixed. Plus I also thought they were all weak references.
>
> not weak references as such, from the ThreadLocal javadoc:
>
>   "Each thread holds an implicit reference to its copy of a thread- 
> local
>   variable as long as the thread is alive and the ThreadLocal instance
>   is accessible; after a thread goes away, all of its copies of  
> thread-local
>   instances are subject to garbage collection (unless other references
>   to these copies exist)."
>
> so it depends on the life of the thread - usually the leaking thread
> is the primordial thread that started the application, which is often
> long-lived.
>
> the other common leak is when you don't clear the thread-local
> before returning a thread to its pool - this could keep alive a lot
> of data until the thread is pulled out of the pool and re-assigned
> (and the thread local is reset)
>
> I could see some possibility of issues if your thread pools shrink and
> grow, but as long as the references are traversable and self contained
> not bound to any long lived object, the weak references in the map
> should work as expected, correct?
>
> except the references aren't weak, but tied to the life of the thread
>
> -bp
>
> On Sep 30, 2008, at 4:59 PM, Bob Lee wrote:
>
> > Are you sure you actually want thread local scope? It's very prone
> > to memory leaks.
> >
> > Bob
> >
> > >
>
>
>
>
>
>
> -- 
> Cheers, Stuart
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"google-guice" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/google-guice?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to