Yes, as I said the annotation was just there by accident.

But thanks for making it clear.
I guess using ObjectLocator.proxy has the same effect? One has to be careful 
not to misuse this feature.

Well, Howards, thanks for taking the minute :-)

I already had a peek at the latest 5.4 code and even got a small test-app 
running without problems so far. Great job!


Am 30.11.2012 um 18:52 schrieb Howard Lewis Ship:

> Per-thread scope means to create a new implementation, via the builder
> method, once for every request: buldUserCacheSupport() is invoked the first
> time any method of UserCacheSupport is invoked.
> 
> EnvironmentalBuilder creates a proxy class and instance, and is intended to
> only be invoked once per service; that is, a singleton service.  Since it
> is being invoked multiple times, it is creating one proxy class after
> another, and these are accumulating in PermGen.
> 
> There is no need to make UserCacheSupport per-thread, since everything in
> the Environment is already per-thread.
> 
> 
> On Fri, Nov 30, 2012 at 9:48 AM, Christian Riedel
> <cr.ml...@googlemail.com>wrote:
> 
>> Hi everone,
>> 
>> today I found the reason for a recent memory leak and I thought I'd ask
>> what you think of it:
>> 
>> Rather by accident I annotated one of the
>> EnvironmentalShadowBuilder-methods with @Scope(PERTHREAD)
>> 
>>    @Scope(ScopeConstants.PERTHREAD)
>>    public UserCacheSupport buildUserCacheSupport() {
>> 
>>        return environmentalBuilder.build(UserCacheSupport.class);
>>    }
>> 
>> (UserCacheSupport is just a custom environmental)
>> 
>> So I removed the annotation and everything is ok again.
>> 
>> But: Isn't that strange? Is that a known behavior? Using jhat I found
>> thousands of undead UserCacheSupport classes tied to a PlasticClassLoader.
>> So Plastic creates one class per request (i.e. per thread) and.. somehow
>> keeps it. Without the explicit @Scope setting there should also be one new
>> object per thread, but it does not cause a leak (since there's not a new
>> class for each request, I guess). I'm wondering if it's actually a bug in
>> Tapestry?
>> 
>> Cheers
>> Christian
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
>> For additional commands, e-mail: users-h...@tapestry.apache.org
>> 
>> 
> 
> 
> -- 
> Howard M. Lewis Ship
> 
> Creator of Apache Tapestry
> 
> The source for Tapestry training, mentoring and support. Contact me to
> learn how I can get you up and productive in Tapestry fast!
> 
> (971) 678-5210
> http://howardlewisship.com


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
For additional commands, e-mail: users-h...@tapestry.apache.org

Reply via email to