[rules-users] Out of memory problem
Eymeric VIEUILLE
evieuille at gfi.fr
Wed Aug 29 03:51:25 EDT 2007
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 !
More information about the rules-users
mailing list