Okay.... So I'm not used to this; how does the task of fixing this
problem get assigned? Should I open a bug in bugzilla for it?

I'd gladly work on it and see what I can get done (as long as I can ask
you developers for assistance if I need to know how something works).
The only question mark in my mind right now is where to put the
configuration option, but I'm sure once I start digging through the code
I'd find it easily enough.

- Daryl.


-----Original Message-----
From: Kris Schneider [mailto:[EMAIL PROTECTED] 
Sent: Tuesday, October 19, 2004 2:43 PM
To: Tag Libraries Developers List
Subject: RE: Memory Leak in ELEvaluator.java (standard v1.0.6)


Some quick options off the top of my head:

J2EE 1.4 requires J2SE 1.4, so we could create an LRU cache with
LinkedHashMap (override the removeEldestEntry method).

We could also implement a cache using reference objects.

Since ELEvaluator already has a constructor arg for bypassing the cache,
we could expose a way to configure its use. I think the only place one
is currently created is as a singleton within Evaluator. Obviously, this
could also be combined with a more memory-friendly cache.

Quoting Daryl Beattie <[EMAIL PROTECTED]>:

> Hi everyone,
> 
>       Following up on the memory leak; I have found that the
"possible" 
> memory leak in the ELEvaluator is indeed a real memory leak. Beyond 
> profiling to find the bug, I have gone to the trouble of disabling the

> sCachedExpressionStrings cache in ELEvaluator, recompiling the 
> standard taglib, deploying and re-testing with the cache-disabled jar.

> What I found is that indeed the leak did disappear, and after running 
> under a load for 8 hours my app was using the same amount of memory as

> it had used in the first 20 minutes.
>       So it definitely is a leak.
>       What should be done about it? Is there a last-recently-used map
that 
> we could be using instead of just a regular HashMap? Should I stick 
> with my cache-disabled jar?
>       I would like to know how you folks would like to handle the bug
so 
> that I can eventually get a new version of the standard taglib. 
> Otherwise, I'll be stuck deploying my hacked jar and relying on my own

> hacked version of the taglib. Let me know if there's any way I can 
> help to get this problem fixed; I'd be glad to volunteer some effort 
> and even some profiling testing.
> 
> Sincerely,
> 
>       Daryl.
> 
> 
> -----Original Message-----
> From: Daryl Beattie [mailto:[EMAIL PROTECTED]
> Sent: Friday, October 15, 2004 5:40 PM
> To: [EMAIL PROTECTED]
> Subject: Possible Memory Leak in ELEvaluator.java (standard v1.0.6)
> 
> 
> Hi everybody,
>  
>         I have a question about a possible memory leak in 
> ELEvaluator.java. I have noticed when profiling that HashMap entries 
> (containing Strings, etc.) are kept by the sCachedExpressionStrings 
> static variable and never removed. Over the course of running an 
> application for several hours that uses tags that have evaluations in 
> them, this Map builds up in memory -- in fact I noticed that it was 
> 343k for just one tag alone after I ran my app for 5 minutes. I have 
> dynamically constructed expressions, and am concerned that each one is

> being cached even if that expression is never used again.
>         Would it be prudent to use some other kind of Collection to 
> store these cached expressions (such as one that times out its entries

> after a certain amount of time)?
>         Also, I have toyed with the idea of adding functionality to 
> permanently disable the cache, but since I do not know the expense of 
> creating a new ELParser with the String expression, I do not know if 
> this will cripple my system. I believe I have a normal percentage of 
> re-used expressions across my tags.
>         I also find it interesting that there is functionality to 
> bypass getting values from the cache, but there is not yet a way to 
> disable its use. Even when bypassing the cache, the cache grows over
time.
>         What do you think about this possible leak?
>  
> Sincerely,
>  
>         Daryl.

-- 
Kris Schneider <mailto:[EMAIL PROTECTED]>
D.O.Tech       <http://www.dotech.com/>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to