2

私の Web アプリには、ユーザーが試験を受けるための機能があります。そして、スコアの評価によだれを使用して、知識レベルを測定します。ステートフル ナレッジ セッションを使用しています。私の場合はこんな感じです。

  1. ユーザーが試験を受けるたびに、2 つの Java Bean がルールに挿入されます。1 つはスコアの評価用で、もう 1 つは結果用です。
  2. ユーザーが試験を終了すると、試験の結果がデータベースに保存されます。
  3. その後、次のユーザーは同じサイクルに入ります

私の質問は、1 人のユーザーの後にワーキング メモリをクリアする必要があるかどうかです。はいの場合、どうすればそれを行うことができますか?

4

2 に答える 2

0

すべての試験で同じ ksession を再利用している場合は、セッションの実行中に挿入したファクトを必ず撤回してください。この場合、insertLogical() が役立ちます。

試験ごとに 1 つのセッションを使用している場合は、使用後にセッションを破棄してください。

それが役に立てば幸い、

于 2013-11-11T09:40:09.053 に答える
0

ステートフル セッションを使用している場合はdispose()、使用後に呼び出してください。可能であれば、kbase をキャッシュすることもお勧めしますが、必要に応じてそれらを作成することでメモリ リークが発生することはありません。

プロファイリングを試み て、Drools のメモリ リークを見つける必要があります。

それ以外は、他の Java アプリケーションと同じです。プロファイラーを使用して、オブジェクト インスタンスをメモリに保持しているクラス (存在する場合) を見つけます。

于 2013-11-11T09:09:49.090 に答える