Drools - 规则数量和permgen空间之间是否存在直接关联?

问题描述 投票:0回答:2

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

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

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

java drools permgen
2个回答
0
投票

从下面的链接看来,我们可以禁用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算法引起的,而主要是由于在drools中6个约束被jitted,即在字节码中转换然后在编译模式下评估而不是为每个评估保持使用mvel 。您可以对设置“drools.permgenThreshold”系统属性的drools使用的permgen空间进行更精细的控制。此属性表示PermGen使用的阈值(百分比),超过该阈值,引擎停止JITting约束并让它们以解释模式运行。特别是将此属性设置为0将完全关闭此优化,但我不建议您这样做,因为通过在编译模式下评估约束而获得的性能增益确实相关。我的建议,至少从长远来看,是迁移到JDK 8,它不再具有与正常堆空间分离的PermGen空间。


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.