2017-12-26 15 views
0

の実行中。ルールを実行している間、OutOfMemoryエラーがスローされます。メモリの問題私はruleAppを作成し、ルール実行サーバーにデプロイしていWODM(JRulesの)

000000bd execution  E The interaction ruleEngine.execute has failed. 
           com.ibm.rules.res.xu.internal.LocalizedResourceException: GBRXU0001E: The interaction ruleEngine.execute has failed. 
     at com.ibm.rules.res.xu.client.internal.jca.XUInteraction.execute(XUInteraction.java:302) 
     at com.ibm.rules.res.xu.client.internal.XUSession.executeOperation(XUSession.java:171) 
     at com.ibm.rules.res.xu.client.internal.XURuleEngineSession.execute(XURuleEngineSession.java:603) 
     at ilog.rules.res.session.impl.IlrStatefulSessionBase.execute(IlrStatefulSessionBase.java:725) 
     at ilog.rules.res.session.impl.IlrStatefulSessionBase.execute(IlrStatefulSessionBase.java:714) 
     at ilog.rules.res.session.impl.IlrStatefulSessionBase.execute(IlrStatefulSessionBase.java:625) 
     at ilog.rules.res.session.impl.IlrStatefulSessionBase.execute(IlrStatefulSessionBase.java:269) 
     at ilog.rules.res.session.impl.IlrStatefulSessionBase.execute(IlrStatefulSessionBase.java:241) 
     at ilog.rules.res.session.impl.IlrStatelessSessionBase.execute(IlrStatelessSessionBase.java:63) 
     at com.bnsf.rules.services.framework.RuleExecutioner.invokeRuleService(RuTioner.java:50) 
     at com.bnsf.rules.services.framework.RuleExecutioner.invokeSimpleRuleService(RuTioner.java:24) 
     at com.bnsf.rules.services.MiscBillingRuleService.execBatch(Miservice.java:222) 
     at com.bnsf.rules.services.MiscBillingRuleService.performTask(MisService.java:158) 
     at com.bnsf.rules.services.MiscBillingRuleService.execute(MisService.java:88) 
     at com.bnsf.rules.services.MiscBillingRuleServiceThread.run(MisThread.java:60) 
Caused by: java.lang.OutOfMemoryError: Java heap space 
     at java.lang.StringBuffer.ensureCapacityImpl(StringBuffer.java:338) 
     at java.lang.StringBuffer.append(StringBuffer.java:204) 
     at java.io.StringWriter.write(StringWriter.java:113) 
     at java.io.StringWriter.append(StringWriter.java:155) 
     at com.ibm.rules.res.xu.engine.de.internal.DEManager.note(DEManager.java:554) 
     at com.ibm.rules.engine.runtime.impl.EngineObserverManager.note(EngineObserverManager.java:84) 
     at com.ibm.rules.engine.rete.runtime.AbstractReteEngine.note(AbstractReteEngine.java:686) 
     at com.ibm.rules.generated.EngineDataClass.ilog_rules_brl_System_printMessage_java_lang_String(Unknown Source) 
     at com.ibm.rules.generated.ruleflow.Service$0020Definition.IntermediateDefnFlow$003eIntermediate$0020Event$0020Definition.BodyExecEnv.executeIntermediate$0020Events$0020For$0020Intra$002dplant$0020Switch$002dEndEventBody3(Unknown Source) 
     at com.ibm.rules.generated.ruleflow.Service$0020Definition.IntermediateDefnFlow$003eIntermediate$0020Event$0020Definition.BodyExecEnv.executeB 

私はエラーがprint文は、自分のアプリケーションのヒープメモリをいっぱいに意味は、ルールのそれぞれにprint文を使用しています。また、エラーメッセージにはルールセット内の特定のパッケージが表示されます。そのパッケージだけからprintステートメントを削除すると、この問題が解決されます。

答えて

0

これは、Javaヒープは、あなたのアプリケーションを実行するにはあまりにも小さいですが、このエラーの一般的な原因は、ルールで無限ループである可能性があります。あなた(または管理者)は、WebSphereのconfigオプションが妥当なヒープ・サイズを指定していることを確認できます。

別の可能性は、他のいくつかのアプリは、すべてのヒープ領域を使用していることである - 私の現在の組織は、彼らがまだ見つかっていないメモリリークからヒープ領域を復元するために毎週自分のdevのサーバーを再起動する必要があります。この場合、ルールはうまく実行しますが、RESに決定倉庫に(大)意思決定トレースを見たとき、私は時々、ヒープ領域不足エラーを取得します。

関連する問題