GC 时间长的流口水

drools with high GC time

就我而言,我想使用 drools 将实时流(来自 kafka)消息作为事实处理。

在准备工作中,我使用以下代码和 jvm params(-Xms1500m -Xmx1500m -Xmn500m, jdk 1.8):

[code sample : simulate continuous facts with while method][1]

测试结果为(应用运行超过24小时):

jconsole monitor

从监视器上看,我发现GC太高了,我猜这个事实位于工作内存中并有引用,所以在主要GC收集之前无法释放。

有什么方法可以显式释放事实吗?或者我怎样才能降低 GC 集合(主要 GC)?

如果您的事实是事件,您可以利用 Drools' expiration policies 事件自动从会话中删除您的事实。

否则,您的会话会越来越大。 Drools 需要将所有事实都存储在内存中才能工作。您可以通过以下选项之一从会话中手动撤回事实:

希望对您有所帮助,