Ø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)

Reply via email to