【发布时间】:2012-02-29 11:42:32
【问题描述】:
drool 5.1 会导致内存泄漏问题吗? 我们在调用 java 代码的地方使用复杂的验证规则。 每个请求后端加载 2-3 个 drool 文件,并为每个请求创建新的知识库。
任何人都可以对此进行更多说明吗?
private void initRulesEngine() {
kbase = KnowledgeBaseFactory.newKnowledgeBase();
if (kbuilder != null) {
kbase.addKnowledgePackages(kbuilder.getKnowledgePackages());
}
}
public void executeRules(BaseUOW requestedUOW) {
initRulesEngine();
ksession = kbase.newStatefulKnowledgeSession();
ksession.insert(requestedUOW);
ksession.fireAllRules();
}
这是我们的 Drool 规则代码
【问题讨论】:
-
我不记得我们在记忆方面对我们的 Drools 应用程序进行了哪些简要介绍,但有据可查的事实是知识库很重要。为什么要为每个请求创建一个新请求?通常,您在应用启动时初始化 1 KB,然后在应用的整个生命周期内重复使用它。
-
是的,你的课程怎么样?您是否为每个请求创建一个 KBase 和一个 KSession?干杯
-
@salaboy 是的,我们正在为每个请求创建一个 KBase 和一个 KSession
-
@Perception 我们可以创建一个 KB,但是我们在管理会话时遇到了问题
-
@Vish - 您需要每个用户的知识会话是的,但每个用户都可以从相同的 KB 创建。完成后不要忘记清理和处置会话,以避免泄漏的可能性。
标签: java memory-leaks drools