Affects Version/s: 1.0
Fix Version/s: None
Operating System: All
This bug refers to the two caches on ExpressionEvaluatorImpl,
sCachedExpressionStrings, but primarily sCachedExpectedTypes.
Here is a use case to illustrate the problem. A web application typically
creates 1,000 different objects of classes it defines using the EL language, and
PropertyEditor's. A Tomcat instance is run with 5 of these web applications.
Each time one of them is reloaded, a new classloader is created for the web
application, so a new set of 1,000 objects is created in the cache. The old
objects, and objects they point to (e.g. class and classloader objects), are
never garbage collected. The only way to recover the associated memory is to
stop and restart Tomcat.
There are many possible solutions. A simple one would be to age instances out
of the caches after a fixed period of time (say one hour). It would be nice if
whatever cache controls are provided are configurable.