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.


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

Reply via email to