DynamicExpresso Eval内存泄漏

DynamicExpresso Eval memory leak

是否有解决方案可以避免像这样的简单表达式计算中的内存泄漏?

        inter.SetVariable("tick", tick++);
        if (inter.Eval<bool>("(tick%2)==1"))
        {
            odd++;
            if ((odd % 100) == 0)
                System.GC.Collect();
        }
        else
            even++;

我 运行 在装有 Mono (5.0.1.1) 的 Linux 机器上的 WinForm 应用程序中定期执行此代码,并且内存使用量不断增加。 在 Windows 上测试,Process.WorkingSet64 的增长速度低于 Linux。 GC.GetTotalMemory一直稳定。

如果可能,最好使用Parse方法,然后多次Invoke表达式。

类似于:

// One time only
string expression = "(tick%2)==1";
Lambda parsedExpression = interpreter.Parse(expression, new Parameter("tick", typeof(int)));

// Call invoke for each cycle...
var result = parsedExpression.Invoke(tick++);

但是根据我之前的测试,我没有看到任何内存泄漏,您确定这是问题所在吗?