JBoss drools的推荐设置

时间:2014-08-13 19:35:00

标签: java performance memory-management drools jvm-arguments

我们正在使用drools来执行大批量数据的规则。

大批量数据,我的意思是我们将很多(5000-10000)脂肪物品装入流口水中。

我们观察到JVM堆的持续增长和规则执行开始降级。

我们是否推荐使用JVM选项或API来释放工作内存。

我正在使用statefulKnowldegeSession并在fireRules()之后调用dispose()。

1 个答案:

答案 0 :(得分:2)

你(几乎可以肯定)只会遇到堆积大量物体的影响,而你的事实只是冰山一角。

你是否需要在工作记忆中同时获得所有5k到10k的事实,例如,为了建立这些事实之间的关系?如果没有,一个合理的方法是在插入1k事实之后fireAllRules。 (运行基准以确定最佳限制。)

然后你可以调用dispose()并重新创建会话,这应该比手动收回所有事实更快。

了解循环对所有10k事实的表现也很有趣:

h = session.insert( f );
session.fireAllRules();
session.retract( h );

始终保持相同的会话。