Henri Biestro created JEXL-448:
----------------------------------
Summary: Cache handling is perfectible
Key: JEXL-448
URL: https://issues.apache.org/jira/browse/JEXL-448
Project: Commons JEXL
Issue Type: Bug
Affects Versions: 3.5.0
Reporter: Henri Biestro
Assignee: Henri Biestro
Fix For: 3.6.0
WHAT:
1. When setting a new class loader, JEXL should invalidate all 'uberspected'
objects to avoid keeping strong references on classes that should be unloaded.
The JXLT engine(s) cache(s) is/are detached from JEXL and can not be cleared
leading to potential strong references being kept on objects that otherwise
would be GCed.
2. An expression AST is dependent on the local variables that are accessed;
caching expressions must be thus verify that the local variables are the same.
This is especially true for interpolation strings that do quite often refer to
local variables.
HOW:
1. A Metacache class that keeps track of created caches through weak references
allows cleaning them if & when necessary.
2. The Source class is augmented with the scope local variables so those are
part of the equality/comparison constraints. The interpolation strings are also
cached in the Engine cache, their TemplateEngine being transient.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)