Memory 使用drools流模式时内存下降

Memory 使用drools流模式时内存下降,memory,drools,complex-event-processing,Memory,Drools,Complex Event Processing,我使用Drools 6.2.Final Fusion CEP,并设置了event@expires(1d),但几天后我发现内存一直在下降。每天事件数据总量不多,我怀疑失效后工作记忆中的事件不清楚,所以我想确认一下: 1.Fusion CEP流模式有状态会话是fireAllRules()之后的必须处理()吗?在我的代码中,ksession只在init方法中创建一次,然后使用它插入一个事件并激发所有规则,但我从不在激发后使用dispose()方法。我担心的不是我没有使用导致事件发生的方法,而是将其保存

我使用Drools 6.2.Final Fusion CEP,并设置了event@expires(1d),但几天后我发现内存一直在下降。每天事件数据总量不多,我怀疑失效后工作记忆中的事件不清楚,所以我想确认一下:

1.Fusion CEP流模式有状态会话是fireAllRules()之后的必须处理()吗?在我的代码中,ksession只在init方法中创建一次,然后使用它插入一个事件并激发所有规则,但我从不在激发后使用dispose()方法。我担心的不是我没有使用导致事件发生的方法,而是将其保存在内存中

2.过期后的事件是否会自动从内存中删除?我担心这一事件没有被正确地清除,导致记忆一直在下降

@org.kie.api.definition.type.Role(org.kie.api.definition.type.Role.Type.EVENT)
@org.kie.api.definition.type.TypeSafe(true)
@org.kie.api.definition.type.Timestamp("beginTime")
@org.kie.api.definition.type.Expires("1d")
public class Event{
    private Long beginTime;

    // ...other fields, set and get method..
}
--

--


测试后,我发现了事件未被正确删除的原因。我需要在如下规则中声明@expires:

declare Event
    @role(event)
    @timestamp(beginTime)
    @expires(2m)
end
我在类事件上方添加的注释不生效

@org.kie.api.definition.type.Timestamp("beginTime")
@org.kie.api.definition.type.Expires("1d")
public class Event{....}

从你的粗略评论中判断你在做什么是不可能的。你说的“火灾后”是什么意思?还是通过“使用累积函数”?或者“内存已被压缩”?-您确定是事件导致OoM吗?您是否附加了一个侦听器来跟踪插入和删除,以保持平衡?抱歉,我修复了描述。我想问的是workingMemery中的事件不会自动删除,以及如何保持内存平衡。Thx感谢您的帮助@launeDon不要在Statefulkie会话中调用
dispose
,除非在您终止使用此会话后-这是最后一次清理。-使用侦听器了解事件事实是如何输入和删除的,以及它们的数量是如何增加的。然后,知道了这一点,是时候讨论如何丢弃过时/过时的事件了。是的,有没有drools方法/api可以删除过时的事件批处理?@launeThere is retract,您必须实施“过时”测试。
declare Event
    @role(event)
    @timestamp(beginTime)
    @expires(2m)
end
@org.kie.api.definition.type.Timestamp("beginTime")
@org.kie.api.definition.type.Expires("1d")
public class Event{....}