Øyvind Horneland created JEXL-352:
-------------------------------------
Summary: Possible memory leak regarind parser jjtree nodes in jexl
3.2
Key: JEXL-352
URL: https://issues.apache.org/jira/browse/JEXL-352
Project: Commons JEXL
Issue Type: Bug
Affects Versions: 3.2
Environment: JEXL 3.2
Java 11
Jetty 9.4.41.v20210516
Reporter: Øyvind Horneland
Attachments: jexl-engine-hprof.png
Our application encountered a memory leak issue after upgrading from JEXL 3.1
to 3.2.
It seems that every call to JexlEngine createExpression now adds new entries to
engine.parser.jjtree.nodes. In our case we suddenly had millions of nodes in
this list.
This sample seems to reproduce the issue
{code:java}
JexlEngine jexlEngine = new JexlBuilder().create();
String testExpression = "dummy";
jexlEngine.createExpression(testExpression); //
jexlEngine.parser.jjtree.nodes.size() == 1
jexlEngine.createExpression(testExpression); //
jexlEngine.parser.jjtree.nodes.size() == 2
{code}
We currently don't cache the returned expression and JexlEngine is configured
with defaults as shown in the sample.
Note that calling jexlEngine.clearCache() does not free the nodes.
Attached screenshot for the hprof of our application with ~ 1.7 million nodes
in jjtree.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)