The reason they have to run so long is that I have a lot of data to *parse* and only need to keep a very small percentage. In this particular case I had a *fact leak* :) It did make me concerned though if I could prevent this from happening by offering reduced functionality or by splitting up calculations in more steps... Unfortunately I am competing for memory on this system and can not even run 2 jess instances in parallel.
tx J ________________________________ From: James Owen <[email protected]> To: [email protected] Sent: Tuesday, September 15, 2009 5:38:19 PM Subject: Re: JESS: Exception in thread "main" java.lang.OutOfMemoryError: Java heap space Just one more thought - if your rules are taking 30 MINUTES rather than 30 seconds then it sounds like you have some kind of loop going on that is building (adding to) memory over and over and over. The Miss Manners benchmark does this intentionally to "stress" the rule engine and, in particular, the Agenda matching table, to see if the engine can handle overloads such as this. Check to see which rule is firing the most and you will probably find your problem child somewhere in that general area. SDG James Owen Founder October Rules Fest Senior Consultant / Architect KBSC http://www.kbsc.com http://www.OctoberRulesFest.org Twitter: OctRulesFest Blogs: http://JavaRules.blogspot.com [Rulebased Systems Blog] http://ORF2009.blogspot.com [October Rules Fest Blog] http://exscg.blogspot.com/ [Expert Systems Consulting Group Blog] "If I have seen a little further it is by standing on the shoulders of giants." Sir Isaac Newton in a letter to Robert Hooke, 5 Feb 1676 Come to October Rules Fest and stand on the shoulders of the Giants of the industry; if only for a week. On Sep 14, 2009, at 8:42 AM, jo wrote: Hi > >I got following error, which surprises me as I try to keep the amount of facts >to a minimum. > >Can I detect this condition *before* it is about to happen ? Any ideas on how >to prevent this ? > >30m is really not that long :( > >Exception in thread "main" java.lang.OutOfMemoryError: Java heap space > at jess.factory.FactoryImpl.newToken(FactoryImpl.java:27) > at jess.Node2.tokenMatchesLeft(Node2.java:326) > at jess.Node2.doRunTestsVaryRight(Node2.java:314) > at jess.Node2.doRunTestsVaryRight(Node2.java:299) > at jess.Node2.runTestsVaryRight(Node2.java:292) > at jess.Node2.callNodeLeft(Node2.java:156) > at jess.NodeJoin.passAlong(NodeJoin.java:99) > at jess.Node2.tokenMatchesLeft(Node2.java:328) > at jess.Node2.doRunTestsVaryRight(Node2.java:314) > at jess.Node2.doRunTestsVaryRight(Node2.java:299) > at jess.Node2.runTestsVaryRight(Node2.java:292) > at jess.Node2.callNodeLeft(Node2.java:156) > at jess.NodeJoin.passAlong(NodeJoin.java:99) > at jess.Node2.tokenMatchesLeft(Node2.java:328) > at jess.Node2.doRunTestsVaryRight(Node2.java:314) > at jess.Node2.doRunTestsVaryRight(Node2.java:299) > at jess.Node2.runTestsVaryRight(Node2.java:292) > at jess.Node2.callNodeLeft(Node2.java:156) > at jess.Node1RTL.passAlong(Node1RTL.java:46) > at jess.Node1RTL.callNodeRight(Node1RTL.java:28) > at jess.Node1.passAlong(Node1.java:49) > at jess.Node1MTELN.callNodeRight(Node1MTELN.java:35) > at jess.Node1.passAlong(Node1.java:49) > at jess.Node1TECT.callNodeRight(Node1TECT.java:40) > at jess.NodeRoot.passAlong(NodeRoot.java:39) > at jess.NodeRoot.callNodeRight(NodeRoot.java:14) > at jess.FactList.processToken(FactList.java:31) > at jess.FactList._assert(FactList.java:210) > at jess.FactList.assertFact(FactList.java:181) > at jess.Rete.assertFact(Rete.java:548) > at jess.FactFunctions$Assert.call(FactFunctions.java:50) > at jess.FunctionHolder.call(FunctionHolder.java:35) > >real 30m12.867s >user 27m48.316s > > > > >tx >J > > > > > >-------------------------------------------------------------------- >To unsubscribe, send the words 'unsubscribe jess-users [email protected]' >in the BODY of a message to [email protected], NOT to the list >(use your own address!) List problems? Notify [email protected]. >-------------------------------------------------------------------- > >
