11

短期間のみ関連するデータのjboss-cacheを作成しようとしています。その後、データを破棄し、それぞれのメモリを解放する必要があります。

キャッシュは次のように構成されています。

/my_region
    /session_1
        /datanode_1
          attribute1: value1
        /datanode_2
          attribute2: value2
    /session_2
        ...
    /session_3
        ...
    ...
    ...

そして、私の立ち退きポリシーの構成は次のようになります。

<attribute name="EvictionPolicyClass">org.jboss.cache.eviction.LRUPolicy</attribute> 
<attribute name="EvictionPolicyConfig">
   <config>
      <attribute name="wakeUpIntervalSeconds">5</attribute>     
         <region name="/my_region">
     <attribute name="maxNodes">100</attribute>
     <attribute name="timeToLiveSeconds">1800</attribute>
        </region>
   </config>
</attribute>

これは機能します/my_region。100人を超える子供がいる場合、最も最近使用されていない子供が追い出され、地域は100人の子供に縮小されます。

の問題は、削除さLRUPolicyれたノードに子がある場合、それらは完全には削除されず、jboss:internal:uninitialized: null代わりに。でマークされることです。この動作は、永続ストレージからのフェッチを回避するためにキャッシュされたエンティティには意味がありますが、永続化されておらず、二度とアクセスされないエンティティのキ​​ャッシュには適していません。

したがって、ノードを削除するために、removeをLRUPolicy使用してevictをオーバーライドする拡張機能を作成しました。

@Override
public void evict(Fqn fqn) throws Exception {
    cache_.remove(fqn);
}

この新しいポリシーは、を残しませんが、に達するとノードをjoss:internal:uninitialized: null削除します。戻ると、リージョンノード自体が実際に削除されてタグが付けられていることに気付きましたが、最近使用された100個の子がまだ残っています。/my_regionmaxNodesLRUPolicyunitialized

地域自体が追い出されるのを防ぐにはどうすればよいですか?立ち退きを期限切れから分離せずに、立ち退きの代わりに削除を行うためのより良い方法はありますか?

jboss-cacheバージョン1.3.0.SP4を使用しています。

4

2 に答える 2

5

JBoss-Cacheバグリポジトリを調べましたか?


編集:

このJBoss-Cacheのバグを見てください。これは非常に関連性が高いようです。

https://jira.jboss.org/jira/browse/JBCACHE-921

1.4.1.SP1で修正

于 2010-04-15T10:54:26.367 に答える
0

プログラムで、キャッシュ領域を常駐として設定できます。

this.cache.getNode(fqn).setResident(true);
于 2013-02-13T08:02:13.480 に答える