新しいdroolsを作成するときにStatefulKnowledgeSessionインスタンスがCPUを大量に消費するという問題があります。それについて話す古いナブルのリンクがありますhere。私はそれを回避する方法がわからないので、私はそれらのプールを作成すると思った。これまでのところ、私は再利用可能かどうかを完全に知ることはできません。私は、2つのスレッドが同時にルールを実行するという意味で、マルチスレッドの安全ではないことを知っていますが、最後の使用がdispose()を呼び出した後、新しいスレッドでセッションを再利用できますか?DroolsはStatefulKnowledgeSessionを再利用しますか?
1
A
答えて
3
1つのKnowledgeSessionConfigurationを作成し、KnowledgeSessionを作成するたびに再利用しました。何らかの理由で(明らかに大きなクラスパス)、構成を作成することは、私がリンクした記事のように、私にとっては非常に高価でした。 KnowledgeSessionConfigurationを一度作成して再利用することで、何が失われるのか分かりません。すべて正常に動作しているようです。
1
別のコンテキストでナレッジベースを作成する場合、statefulKnowledgeSessionsの作成は高価ではありません。セッションが必要になるたびにルールをコンパイルしないでください(builder.add())。リクエストごとに新しいセッションを作成し、メモリリークを避けるためにそれを処分することができます。セッションを再利用するのではなく、細かいセッションを作成することになります。 乾杯
関連する問題
- 1. WPF - 再利用
- 2. 再利用値
- 3. 再利用UITableViewCell