流口水 - 规则数量和永久空间之间是否存在直接关联?



我用 100 条规则运行了流口水的决策表,它工作正常。但是一旦我将规则数量增加到 1000,我就开始出现 permgen 空间错误。我必须将permgen增加到256MB,以适应3000条规则。我担心的是,随着我不断添加规则,我可能需要越来越多的permgen。

由于这个问题,我正在考虑不使用口水并开发自定义解决方案。

这是正确的观察还是我做错了什么,导致烫发空间要求增加

从下面的链接来看,我们似乎可以禁用Java 7的permgenThreshold,尽管它会对规则评估性能产生负面影响。

https://issues.jboss.org/browse/DROOLS-1016?focusedCommentId=13144411&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-13144411

占用的permgen空间而言,增加的需求不是 由新的 phreak 算法引起,但主要是由于在 流口水 6 个约束被抖动,即转换为字节码,然后 在编译模式下进行评估,而不是继续对每个模式使用 mvel 评估。您可以对permgen空间进行更精细的控制 由 drools 设置"drools.permgenThreshold"系统属性使用。 此属性表示 PermGen 使用量的阈值(在 百分比(,超过该百分比,引擎将停止 JITting 约束并让 它们在解释模式下运行。特别是将此属性设置为 0 将完全关闭此优化,但我不建议您 这样做是因为通过评估 编译模式下的约束确实相关。我的建议,在 至少从长远来看,是迁移到不再具有 PermGen 空间与正常堆空间分离。

是的,我们知道这个问题 https://issues.jboss.org/browse/RHDM-488

相关内容

最新更新