在我的应用程序中,我将近 10,000 条规则加载到 Drools(Drools 5.5.0.final)。但是应用程序抛出 java.lang.OutOfMemoryError 异常。我的 jvm 参数,
-Xms1024m
-Xmx1024m
谁能帮我解决这个问题。我也使用了 BigMemory ( http://terracotta.org/products/bigmemory ) 但仍然遇到同样的错误。
提前致谢 !
在我的应用程序中,我将近 10,000 条规则加载到 Drools(Drools 5.5.0.final)。但是应用程序抛出 java.lang.OutOfMemoryError 异常。我的 jvm 参数,
-Xms1024m
-Xmx1024m
谁能帮我解决这个问题。我也使用了 BigMemory ( http://terracotta.org/products/bigmemory ) 但仍然遇到同样的错误。
提前致谢 !
使用 VisualVM 之类的分析器(免费且非常易于运行)来查看内存随时间变化的图表,并在内存耗尽之前拍摄堆快照。
尤其是该图可以告诉您一些有趣的事情(通过Thread.sleep
在您的代码中添加一些 's),这可以为您和我们提供线索是什么导致它:
当您每次重新使用相同的“statefulKnowledgeSession”来触发流程时,可能会发生这种情况。在这种情况下,每个statefulKnowledgeSession.insert(fact)
新事实都被插入但不删除以前的事实。您的情况是,请在使用以下方法触发新进程之前删除/撤回先前插入的事实:
`ksession.retract(factHandle);