2012-08-10 13 views
8

जावा में एक डेटा संरचना है जिसे वीकहाशैप कहा जाता है जो कुंजी के रूप में कमजोर संदर्भ संग्रहीत करता है। जब भी कमजोर संदर्भ स्मृति से बाहर ले जाते हैं तो प्रवेश नक्शे से हटा दिया जाता है।जावा: कमजोर संदर्भों के साथ ढेर

यदि मेरे पास स्टैक या सेट जैसी डेटा संरचना है जहां मैं कमजोर संदर्भ संग्रहीत कर रहा हूं, तो कमजोर संदर्भ स्मृति से बाहर होने पर उनकी प्रविष्टियां स्वचालित रूप से हटा दी जाएंगी?

नीचे एक स्टैक का एक उदाहरण है जो कमजोर संदर्भ संग्रहीत करता है।

Stack<WeakReference<Object>> objStack = new Stack<WeakReference<Object>>(); 
+0

उह, हाँ ... ..। – esej

+0

क्या आप वाकई इसके बजाय एक शून्य मान वापस नहीं करेंगे? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+1

यदि आप असली एप्लिकेशन के लिए कमजोर संदर्भों का उपयोग करने के बारे में सोच रहे हैं, तो कृपया ** ऐसा न करें **! जो लोग कोर लाइब्रेरी का निर्माण करते हैं उन्हें खेद है क्योंकि वे कोई लाभ नहीं देते हैं। यदि आप रुचि रखते हैं तो यह [प्रस्तुति] देखें (http://www.infoq.com/presentations/Extreme- प्रदर्शन - जावा)। – Augusto

उत्तर

2

हां। आप जो वर्णन कर रहे हैं वह सामान्य रूप से कमजोर संदर्भों की एक संपत्ति है, विशेष रूप से WeakHashMap नहीं।

the API से:

मान लीजिए कि कचरा कलेक्टर समय में एक निश्चित बिंदु है कि एक वस्तु दुर्बलता से पहुंचा जा सकता है पर निर्धारित करता है। उस समय यह उस वस्तु के सभी कमजोर संदर्भों को परमाणु रूप से साफ़ करेगा ...

+0

तो यदि आपके पास वीक रेफरेंस का लिंक्डलिस्ट है और सूची के मध्य में कमजोरियों में से एक स्मृति से बाहर हो जाता है, तो आपकी लिंक्डलिस्ट अपेक्षित काम करेगी? – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

+0

मुझे यकीन नहीं है कि इसका उत्तर कैसे दिया जाए ... यह उस पर निर्भर करता है जिसे आप "अपेक्षित" मानते हैं। – Pops

+0

मुझे लगता है कि मुझे समझ में नहीं आया था जब आप एक weakReference पर .get() को कॉल करते हैं तो यह वास्तविक वस्तु प्राप्त करता है। WeakReference केवल उस ऑब्जेक्ट को शून्य करने के लिए सेट नहीं है जिसे वह इंगित करता है। – zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

संबंधित मुद्दे