मैं डेटा के लिए एक 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
के साथ समस्या यह है कि जब बेदखल नोड्स में बच्चे होते हैं, they're not completely removed, but marked with jboss:internal:uninitialized: null
instead। यह व्यवहार उन संस्थाओं के लिए समझ में आता है जो उन्हें लगातार भंडारण से बचने से बचने के लिए कैश किए जाते हैं, लेकिन यह उन इकाइयों को कैशिंग करने के लिए उपयुक्त नहीं है जो लगातार नहीं बने रहेंगे और कभी भी इसका उपयोग नहीं किया जाएगा।
तो, नोड्स को हटाने के लिए, मैंने LRUPolicy
का विस्तार बनाया है जो निकालने के साथ बेदखल ओवरराइड करता है।
@Override
public void evict(Fqn fqn) throws Exception {
cache_.remove(fqn);
}
इस नई नीति को पीछे छोड़ नहीं करता है joss:internal:uninitialized: null
की, लेकिन जब maxNodes
तक पहुँच जाता है यह /my_region
नोड निकाल देता है। जब मैंने LRUPolicy
वापस रख दिया, मैंने देखा कि क्षेत्र नोड वास्तव में बेदखल हो जाता है और unitialized
टैग प्राप्त करता है, लेकिन 100 सबसे हाल ही में उपयोग किए जाने वाले बच्चे अभी भी बने रहते हैं।
मैं इस क्षेत्र को खुद को बेदखल करने से कैसे रोक सकता हूं? क्या eviction from expiration को अलग किए बिना निष्कासन के बजाय हटाने का कोई बेहतर तरीका है?
मैं jboss-cache संस्करण 1.3.0.SP4 का उपयोग कर रहा हूं।
jboss-cache का कौन सा संस्करण? – skaffman
1.3.0.एसपी 4, मैं इसे प्रश्न में शामिल करूंगा। – hvrauhal