You are leaking memory there, because you are not calling the dispose in the first session, if you run the second.

   []s
   Edson

2010/2/4 HonorGod <jagadeesh.motamarri@barclayscapital.com>

I have over million rows of data that are stored in a fact model. I have to
apply 2 sets of rules [coming from 2 decision tables - cannot combine them
for a specific reason] on each fact model.

I have created static knowledgebases and stored them in cache so that they
can be used when ever new StatefulKnowledgeSessions are required.

This is how I am doing it -

Iterating over the fact model one after the other and pass them to the
method that applies rules -

 public int applyRules(MyModel model) {
       int noOfRulesFired  = 0 ;
       StatefulKnowledgeSession kSession =
((KnowledgeBase)DroolsKnowledgeBaseManager.getInstance().knowledgeBases.get("FirstSetOfRules")).newStatefulKnowledgeSession()
;
       kSession.insert(model);
       noOfRulesFired = kSession.fireAllRules();

       if( noOfRulesFired >= 1  ) {
       kSession =
((KnowledgeBase)DroolsKnowledgeBaseManager.getInstance().knowledgeBases.get("SecondSetOfRules")).newStatefulKnowledgeSession()
;

       kSession.insert(model);
       kSession.insert(this);
       noOfRulesFired +=kSession.fireAllRules();
       }
       kSession.dispose() ;
       return noOfRulesFired ;
   }

Is this good approach? How can I reuse StatefulKnowledgeSessions so that I
can insert my fact models one at a time and fire rules. Creating new
StatefulKnowledgeSession for every fact model is consuming lot of memory and
even though dispose() is called before existing method - GC might not clean
it instently.

Please assist [I am in middle of UAT and started to notice that memory
consumption is too high] .

Thanks
--
View this message in context: http://n3.nabble.com/Performance-and-Memory-Utilization-StatefulKnowledgeSession-tp187463p187463.html
Sent from the Drools - User mailing list archive at Nabble.com.
_______________________________________________
rules-users mailing list
rules-users@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users



--
 Edson Tirelli
 JBoss Drools Core Development
 JBoss by Red Hat @ www.jboss.com