Eymeric,
I think what you have there is a combinatorial explosion. I.e. 5
patterns, all of the same type, doing an almost full cross product (limited
only by the type attribute constraint). If you check the agenda I would
expect to see a huge number of activations (it should be all possible
combinations of your 53 objects).
Anyway, there are a few fixes made to 4.0.1, including some that affect
memory usage. One of the fixes we did was for increasing number of rule
fires, as you can see in the following test case. Look for testOutOfMemory()
method. It is a bit different of what you do, but using default 64Mb heap
configuration, I left the test running 100million+ rule firings and the
memory didn't blow up. The test is now limited to 3million fires so we can
keep it as part of our build process. Before the fix, it was raising OOME on
1.7million fires.
http://anonsvn.labs.jboss.com/labs/jbossrules/trunk/drools-compiler/src/t...
Personally I think 53 objects is absurdly low. We have real use cases of
companies asserting millions of facts into the working memory at once and it
works just fine, with real rule sets of hundreds of rules. Maybe they
manifest themselves after reading this message.
If you think this is indeed a problem, may I ask you please to open a
JIRA and submit us a self contained test showing the problem? I will profile
your test and determine the causes and if it is a problem on the engine, I
will fix it.
Thank you,
Edson
2007/8/29, Eymeric VIEUILLE <evieuille(a)gfi.fr>:
Hi !
I am currently leading a study that compares BRMS. The aim of this study
is to determine if a rules engine can be used for our application and
what rules engine to use.
I made a prototype and I encountered a big problem of memory : no more
than 53 objects could be passed as facts. After this threshold, I
encountered a java.lang.OutOfMemoryException :
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
I increased the memory allocated to the JVM, but the more I insert
objects as Facts and the more Drools becomes slower !
I think that the problem is exactly the same as the following one :
http://lists.jboss.org/pipermail/rules-users/2007-August/002592.html
Can you confirm to me that is the same problem ? And in a positive
affirmation, how to solve this problem ? And how much time would it take ?
I am using drools 4.0 (developing whith associated eclipse IDE).
I realized a dslr that looks like this :
package com.sample
import XXX.Message;
import XXX.MyObject;
expander leg_recognizer.dsl
rule "rule 1"
no-loop true
when
$m1 is an "OUT" marker
$m2 is an "OFF" marker
$m3 is an "ON" marker
$m4 is an "IN" marker
$m4 event date is more than $m1 event date
then
print "Rule 1"
display message $m1
display message $m2
display message $m3
display message $m4
make $m1 treated
make $m2 treated
make $m3 treated
make $m4 treated
create a object "1" with state "active";
end
rule "rule 2".............(same principle) --> 6 rules in the real file.
And it uses the following dsl file :
[condition][]{message} is an "{state}" marker={message} : Message(type
== "{state}")
[consequence][]print "{string}"=System.out.println("{string}");
[consequence][]display message {object}=System.out.println("Message : "
+ {object});
[consequence][]create a object "{id}" with state
"{state}"=insert(new
MyObject("{id}", "{state}"));
[consequence][]make {message} treated=retract({message});
[condition][]{message1} event date is more than {message2} event
date=eval({message1}.isALaterEventThanMessage({message2}))
Did I made a mistake in the use of Drools or is this a bug ?
Thanks for answers...That's quite urgent !
_______________________________________________
rules-users mailing list
rules-users(a)lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-users
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3529-6000
Mobile: +55 11 9287-5646
JBoss, a division of Red Hat @
www.jboss.com