अन्य मानचित्र कार्यान्वयन जैसे हैश मैप, चाबियाँ दृढ़ता से पहुंच योग्य हैं।उदाहरण के लिए, यदि हैश मैप में नीचे दिखाए गए व्यक्ति वर्ग के रूप में चाबियाँ हैं और यदि व्यक्ति ऑब्जेक्ट को शून्य पर सेट किया गया है, तो इसके बाद भी अगर हम नक्शा करेंगे .get (व्यक्ति) हमें स्मृति से मूल्य प्राप्त होगा क्योंकि चाबियाँ दृढ़ता से संदर्भित हैं हैश मैप में
wm.put(person, person.getFirstName());
person = null;
System.gc();
System.out.println("Hash Map :" + wm.toString());
आउटपुट: हैश मानचित्र: {} [email protected]=John
HashMap की तुलना में, WeakHashMap एक के रूप में कुंजी स्मृति में कोई संदर्भ है जो अपनी enteries रूप में जल्द ही निकाल देंगे है। उदाहरण के लिए, यदि वीक हैशैप के पास नीचे दिखाए गए व्यक्ति वर्ग के रूप में चाबियाँ हैं और यदि व्यक्ति वस्तु शून्य पर सेट की गई है, तो अब यदि आप map.get (व्यक्ति) करते हैं तो हम इससे बाहर निकल जाएंगे क्योंकि कुंजी का कोई संदर्भ नहीं है (या बल्कि कमजोर पहुंच योग्य)।
wm.put(person, person.getFirstName());
person = null;
System.gc();
System.out.println("Weak Hash Map :" + wm.toString());
आउटपुट: कमजोर हैश मानचित्र: {}
स्रोत
2015-01-13 14:18:27
हाँ, एक WeakHashMap वस्तुओं के लिए कमजोर संदर्भ शामिल हैं। कचरा कलेक्टर यह पता लगाता है कि (और अन्य कमजोर संदर्भ) वस्तु के आखिरी शेष संदर्भ हैं, तो एक कमजोर संदर्भ में यह सूचक "ज़ेड" होता है। लेकिन यह केवल कुछ जीसी चक्रों पर होता है। ऑफहैंड, मुझे नहीं पता कि यह होने पर मानचित्र की गिनती के साथ क्या होता है। –
@aioobe "अगर emp में कर्मचारी अंतिम रूप से पहुंचने योग्य अंतिम संदर्भ शामिल करता है तो मानचित्र में प्रविष्टि को हटाया जा सकता है।" मुझे यह नहीं मिला। क्या आप कृपया और विस्तार से बता सकते हैं? – Anand
@anand, अगर 'emp' एकमात्र चर था जो कुछ 'कर्मचारी' (अन्य * कमजोर * संदर्भों के अलावा हैश मैप में से एक के संदर्भ में) के लिए संदर्भित किया गया था, तो 'emp = null' करने से कर्मचारी को प्रश्न में रखा जाएगा कचरा संग्रह के लिए पात्र। [पहुंच क्षमता] पर पढ़ें (http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ref/package-summary.html#reachability)। – aioobe