10.4.4. LFUAlgorithm - 使用頻度が最低
org.jboss.cache.eviction.LFUAlgorithm は使用頻度が最も低いアルゴリズムを基にエビクションを制御します。 このポリシーでは、 使用頻度が最も低いノードが最初にエビクトされます。 ノードが最初に追加されると、 ノードの使用は 1 から始まります。 ノードにアクセスするたびに、 ノードの使用カウンタが 1 つ増えます。 この数は、 使用頻度が最も低いノードを決定するために使用されます。 また、 LFU はソートされたエビクションアルゴリズムです。 基礎となる EvictionQueue 実装とアルゴリズムは、 ノードビジットカウンタの昇順でソートされます。 このポリシーによって、 追加、 削除、 検索 (ビジット) に対し一定順序 ( O (1) ) が保証されます。 ただし、 任意数のノードが該当する処理パスのキューに追加またはビジットされる場合、 適切な LFU の順序でキューを再ソートするために単一の準線形 ( O (n * log n) ) 操作が使用されます。 同様に、 ノードが削除またはエビクトされる場合は、 EvictionQueue をクリーンアップするために単一の線形 ( O (n) ) 切り捨て処理が必要です。 LFU は次のパラメータを持ちます。
maxNodes- このリージョンで許可されるノードの最大数になります。 0 は即時失効、 -1 は無制限を表します。minNodes- このリージョンで許可されるノードの最小数になります。 この値は、 エビクションキューがパスごとに切り捨てるノードの数を決定します。 例えば、 minNodes が 10 で、 キャッシュが 100 個のノードに増加すると、 エビクションタイマーがエビクションアルゴリズムよりパスした時に最も使用頻度が高い 10 個のノードにキャッシュが切り捨てられます。minTimeToLive- エビクションの対象となる前に、 アクセスされた後ノードが存在しなければならない最短期間になります。 0 はこの機能の無効を表し、 デフォルト値となります。