[rules-users] queries in Drools 5.0

Mark Proctor mproctor at codehaus.org
Thu Apr 30 21:13:10 EDT 2009


Quinn, Dan wrote:
> We are writing an app which has a large number of facts. This app also 
> needs to make lots of queries against working memory. Our memory 
> footprint seems to be expanding at an undesirable rate due to the 
> number of queries made against working memory. It is increasing at a 
> rate where after a couple of days the app will consume all the 
> resources on the machine. This app is stateful and needs to stay up 
> for a long duration. Rebooting it every couple of day to clean up 
> working memory would not be acceptable.
>  
>  It seems to me that the queries are being added to working memory as 
> facts, but the query is not retracted after its result is returned. Is 
> that true? Is there something I need to do so query facts are removed 
> after the results are returned to keep the size of working memory down?
>  
> Has this behavior changed since Drools 4.0.7. I don't recall seeing 
> this issue running against the older version of Drools.
no, after a query the memory should return to before the query was 
executed. If it's not, then there is a memory leak, maybe the retracting 
of the query driver is not happening. If you look at the query method, 
it just inserts a DroolsQuery object and retracts it and gathers up the 
results inbetween. If you have jprofiler you can have a good idea if the 
DroolsQuery object is getting GC'd, or if they are building up.

Mark
>  
> Thanks,
> Dan
>  
> Daniel Quinn
> Fedex - Custom Critical
> Software Specialist I
> 234.310.4090(x2586)
>  
>
> ------------------------------------------------------------------------
> *From:* rules-users-bounces at lists.jboss.org 
> [mailto:rules-users-bounces at lists.jboss.org] *On Behalf Of *David Sinclair
> *Sent:* Friday, April 03, 2009 3:20 PM
> *To:* Rules Users List
> *Subject:* Re: [rules-users] Locating facts via slot values
>
> Here you go WolfGang
>
> rule shoot-3
>     when
>             $h : Hunter( $target : target)
>                   Animal(this == $target)
>     then
>        $h.shoot( $a );
>        retract( $a );
> end
>
> 2009/4/3 Wolfgang Laun <wolfgang.laun at gmail.com 
> <mailto:wolfgang.laun at gmail.com>>
>
>     Given a working memory containing a large number of rather static
>     facts which are from several subclasses (Ape, Bear, Crocodile,...)
>     of some base class (Animal) and a single fact of class Hunter with
>     a field target of type Animal, the shooting of an animal might be
>     written with a rule like this:
>
>     rule shoot-1
>         when
>             ?h : Hunter( ?target : target )
>             ?a : Animal()
>             eval(?target == ?a)
>         then
>            ?h.shoot( ?a );
>            retract( ?a );
>     end
>
>     Avoiding eval (which is said to be inefficient), it could also be
>     written as
>
>     rule shoot-2
>         when
>             ?a: Animal()
>             ?h : Hunter( target  == ?a )
>         then
>            ?h.shoot( ?a );
>            retract( ?a );
>     end
>
>     This, however, places the pattern with many instances up front,
>     which is (AFAIK) not so good in a Rete implementation.
>
>     Which one is to be preferred in Drools?
>
>     Ideally, one might want to write
>
>     rule shoot-3
>         when
>             ?h : Hunter( ?target : target )
>             ?a == ?target : Animal()                   ### not valid DRL
>         then
>            ?h.shoot( ?a );
>            retract( ?a );
>     end
>
>     This avoids eval, has the single instance fact up front, but it
>     isn't available.
>
>     -W
>
>
>
>
>     _______________________________________________
>     rules-users mailing list
>     rules-users at lists.jboss.org <mailto:rules-users at lists.jboss.org>
>     https://lists.jboss.org/mailman/listinfo/rules-users
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> rules-users mailing list
> rules-users at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-users
>   

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-users/attachments/20090501/932e3a65/attachment.html 


More information about the rules-users mailing list