मैं एक (एंड्रॉइड) बिटमैप-कैश के हिस्से के रूप में WeakReference
एस का उपयोग करना चाहता हूं ताकि यह जांचने में सक्षम हो कि बिटमैप का अब और उपयोग नहीं किया जाता है।जब WeakReference # मिलता है() शून्य वापस लौटना शुरू करते हैं?
मेरे कैश में अधिकतम आकार है जो जावा हीप-स्पेस से छोटा है। जब एक नया बिटमैप कैश को बहता है, तो उसे बिटमैप्स को छोड़ देना चाहिए जिनकी अब आवश्यकता नहीं है।
मेरा प्रश्न: WeakReference
की वापसी() - विधि कब वापस आती है?
- जैसे ही वस्तु के लिए कोई और मजबूत संदर्भ नहीं हैं? (और जीसी अभी तक नहीं हुआ है)
- या जब जीसी ने भाग लिया और निर्धारित किया कि वे ऑब्जेक्ट के लिए अधिक मजबूत संदर्भ नहीं हैं?
यदि 2. यह सच है कि मैं इस स्थिति में भाग सकता हूं कि मेरा कैश भर सकता है और जीसी हाल ही में किसी कारण से नहीं चला है।
फिर भी अगर मैं पहले से ही संदर्भों को छोड़ देता हूं तो अंतिम जीसी रन के बाद, WeakReference#get()
अभी भी ऑब्जेक्ट वापस कर देगा और मेरा कैश इसे साफ़ नहीं करेगा।
सॉफ्ट संदर्भ कैशिंग के लिए हैं। एंड्रॉइड पर उनका व्यवहार क्या है? –
वही- जैसे ही कोई मजबूत संदर्भ मौजूद नहीं है, वे स्वतंत्र हो जाते हैं। जो जावा मानक के पत्र का पालन करता है, अगर आत्मा नहीं है। –
परिवर्तन एपीआई स्तर 9 में था। प्रासंगिक दस्तावेज: http://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#memory-cache – Delyan