2012-01-12 5 views
9
  1. ehcacheを2.5
  2. timeToIdleSecondsなど=「1800」(30分)立ち退きのメモリから要素を削除しないので、私は、要素が最後の要素の使用後にアイドル
  3. 30分であるの30分後に追い出すことを期待します私はまだ要素がメモリに残っていることを、そのキャッシュが要素
  4. GCを強制して、ヒープ・ダンプ・ショーを取るのがいっぱいです見ることができます
  5. のgetSize()正の数メソッドおよびgetKeysを(返す)(getKeys(期待通りのキーを返します)んチェック要素が有効期限切れでない)
  6. 特定の要素を取得しましたが、結果はNULL値になりました。つまり、有効期限が切れました。
  7. getKeysWithExpiryCheck()に示すように、そのキャッシュは空であり、すべての要素がexiredおよび要素がメモリから収集することを、GCを強制し、ヒープ・ダンプ・ショーを取る
  8. 追い出さ。私はそれらをリフレッシュするために私のコードのロジックを招く可能性がある要素の期限が切れていることを、印象を作るEhcacheのが、私は特定の要素またはgetKeysWithExpiryCheckを呼び出すまでフードメモリの下までの元素で汚染され、参照の上からにehcacheは

    maxEntriesLocalHeap="10000" 
    eternal="false" 
    statistics="true" 
    overflowToDisk="false" 
    timeToIdleSeconds="1800" 
    memoryStoreEvictionPolicy="LFU" 
    transactionalMode="off" 
    

()は、有効なメモリマネージャーとしてehcacheを使用させません。

timeToIdleSeconds時間後に要素をGSにする方法はありますか? timeToIdleSecondsより上で要素が使用されていない場合、メモリを消去したい。

要素を入れたときにマイケル

答えて

18

Ehcacheのは要素だけを立ち退かせるだろうし、あなたのキャッシュがしきい値を超えています。それ以外の場合は、期限切れの要素にアクセスすると、期限切れとなり、キャッシュから削除されます。期限切れの要素をバックグラウンドでキャッシュから収集して削除するスレッドはありません。これはキャッシュのパフォーマンスに影響するため、キャッシュのパフォーマンスに影響するため、推奨しませんが、メモリ使用量が重要な場合は、これが適切なトレードオフになる可能性があります。定期的にgetKeysWithExpiryCheck()をバックグラウンドスレッドとして使用できます。

メモリ消費量が大きなポイントである場合、新しいEhcache 2.5を調べると、(CacheManagerレベルでも)使用可能なヒープ量を指定できます。