キャッシュ制限を超えた場合、トレース・ポイントが次のようになる場合があります。
BackgroundLru < EJB Cache: Sweep (64,38) - Evicted = 50 : 3589/2053 Exit
Evicted = というストリングに注意してください。
このストリングが表示される場合、オプション A または B のキャッシングが設定されたステートフル・セッション Bean またはエンティティー Bean を使用していることになります。
オブジェクトが除去されたということは、選択したキャッシング・オプションのメリットを十分に利用していないことになります。
まず、EJB キャッシュ・サイズを増やすことを試みてください。
アプリケーションを引き続き実行するとさらに多くのオブジェクトが除去される場合、
このアプリケーションは EJB キャッシュ・スイープ間との間でキャッシュが保有できる量を超える Bean に
アクセスしたり新規 Bean を作成したりしており、既存の Bean を再利用してい
いない ことを意味します。
この時点で、エンティティー Bean にオプション C キャッシングを使用すること、あるいは
アプリケーションがもう必要のなくなったステートフル・セッション Bean を除去していないかどうかを確認することを検討します。
注: オプション C キャッシングで構成されたエンティティー Bean は、トランザクションの間のみキャッシュ内にありますが、
トランザクションを通じてキャッシュ内に保持することを求められます。
したがって、これらのエンティティー Bean はキャッシュ・スイープ中に除去されることはありませんが、
トランザクションが完了するとキャッシュから除去されます。
さらに、ステートレス・セッション Bean、またはオプション C キャッシングが設定されたエンティティー Bean (あるいはその両方) を使用している場合、EJB キャッシュの
クリーンアップ間隔 をより大きな値に増やしておいた方が良い場合があります。
クリーンアップ間隔は、
EJB キャッシュ設定
に記載されている方法で設定できます。
ステートレス・セッション Bean は EJB キャッシュ内に存在
しません。
オプション C キャッシングを使用するエンティティー Bean はキャッシング (LRU) 戦略によって除去されることはないので、
実際はさほど頻繁にスイープする必要はありません。
ステートレス・セッション Bean かオプション C キャッシングのみを使用している場合、上記のトレース例に "Evicted = 0" だけが表示されるはずです。