PropertyMessageResources.getMessage() does not cache failed lookups
-------------------------------------------------------------------
Key: STR-3056
URL: https://issues.apache.org/struts/browse/STR-3056
Project: Struts 1
Issue Type: Improvement
Components: Core
Affects Versions: 1.3.8, 1.1 Final
Environment: Applies to all environments
Reporter: Patrick HIggins
Priority: Minor
We have an application that allocates lots of garbage (sometimes over 100MB)
when rendering a single page. After using Netbeans profiler with it, I've found
that a lot of that garbage is created by MessageResources.messageKey().
It appears that we are calling bean:write (WriteTag) thousands of times, and it
looks up the message for "org.apache.struts.taglib.bean.format.int" to try to
find a default format for integers. We have not defined this property in our
ApplicationResources, so it ends up returning the value
"???en_US.org.apache.struts.taglib.bean.format.int???" after searching
exhaustively for it. It does not cache this value. Then, when we call it the
next 8,000 times, it performs the same exhaustive search over and over because
it's not caching the negative response.
I propose that negative responses get cached, too. That would save a lot of
time and memory so that WriteTag can just go ahead and call toString() on the
instance of java.lang.Integer.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.