[ 
https://issues.apache.org/jira/browse/JEXL-352?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Henri Biestro resolved JEXL-352.
--------------------------------
    Resolution: Fixed

https://github.com/apache/commons-jexl/tree/d81b04281cd01b8d656acbda382c856cd57c94b8

> Possible memory leak regarding 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
>            Assignee: Henri Biestro
>            Priority: Critical
>             Fix For: 3.2.1
>
>         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