当前位置: 首页 > 知识库问答 >
问题:

Drools-规则的数量和permgen空间之间有直接的相关性吗?

夏雅志
2023-03-14

我运行了包含100条规则的drools决策表,它运行良好。但是当我将规则数量增加到1000时,我开始出现permgen空间错误。我必须将permgen增加到256MB才能使我的进程适应3000条规则。我担心的是,随着我不断添加规则,我可能需要越来越多的permgen。

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

这是正确的观察结果还是我做错了什么导致永久发电机空间需求增加

共有2个答案

郎河
2023-03-14

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

涂玉韵
2023-03-14

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

https://issues.jboss.org/browse/DROOLS-1016?focusedCommentId=13144411

占用permgen空间的需求增加不是由新的phreak算法引起的,而是主要是因为在drools中放弃了6个约束,即以字节码转换,然后在编译模式下进行评估,而不是每次评估都使用mvel。您可以对drools使用的permgen空间进行更细粒度的控制,设置“drools.permgen阈值”系统属性。此属性表示PermGen使用的阈值(百分比),超过该阈值,引擎将停止JITting约束并让它们以解释模式运行。特别是将此属性设置为0将完全关闭此优化,但我不建议您这样做,因为在编译模式下评估约束所获得的性能增益确实相关。我的建议,至少从长远来看,是迁移到不再有与正常堆空间分开的PermGen空间的JDK 8。

 类似资料:
  • 我正在寻找一种方法来声明“2个依赖项之间的依赖项”。 例如,在我的模块中,我ivy.xml以下行: 我的问题是,日志经典 1.0.13 依赖于 slf4j-api 1.7.5,而我的模块依赖于 1.6.6(slf4japiversion 的值)。 我无法更改 slf4japiversion,但将来它可以由其他人升级。 有没有办法声明对logback的依赖关系,以检索与我的slf4j api版本兼容

  • 网格视图的项目 网格视图布局 由于某些原因,网格视图之间仍然有空格,我将尝试所有可能的解决方案,但仍然无法实现。不知怎么的,图像(项目)的每一边都有一个间隙。我只想让所有的图像之间没有空格。i、 e instagram网格视图(靠近) 提前感谢您 解决办法 所以我已经想好如何改变整个事情,使两者之间没有差距。和Gridview.xml仍然保持不变。 这将是项目.xml:

  • 以下用例的最佳实践建议是什么?我们需要将一个流与一组“规则”进行匹配,这些“规则”本质上是一个Flink数据集的概念。对此“规则集”的更新是可能的,但不是频繁的。每个流事件必须与“规则集”中的所有记录进行检查,每次匹配都会在接收器数据流中产生一个或多个事件。规则集中的记录数在6位数范围内。 目前,我们只是将规则加载到本地规则列表中,并在传入的数据流上使用flatMap。在flatMap中,我们只是

  • 我有两个flex项目在一个包装在一列中的容器中,两个盒子之间有一个很大的空间,我尝试使用

  • 在Java 7之前,JVM内存中有一个名为PermGen的区域,JVM以前在这里保存它的类。在Java 8中,它被移除并被称为元空间的区域所取代。 PermGen和Metaspace之间最重要的区别是什么? 我知道的唯一区别是,并且忽略了VM参数。