2011-01-24 14 views
7

जावा में सी ++ स्मार्ट पॉइंटर्स की लाइनों के साथ कुछ भी है?क्या जावा में "स्मार्ट पॉइंटर्स" हैं?

+0

मुझे लगता है कि आप वहां कुछ भ्रमित कर सकते हैं। स्मार्ट पॉइंटर्स कच्चे पॉइंटर्स के चारों ओर एक रैपर होते हैं जो उदा। संदर्भ गिनती या सीमाओं की जांच। जावा में कच्चे पॉइंटर्स नहीं हैं और इसमें जीसी निर्मित है। – delnan

+0

अधिक के लिए स्मार्ट पॉइंटर्स के लिए विकिपीडिया स्पष्टीकरण देखें: http://en.wikipedia.org/wiki/Smart_pointer –

+1

भाषा कार्यान्वयन स्वयं (JVM) अधिकतर लेता है (यदि सभी नहीं) आमतौर पर सी ++ में स्मार्ट पॉइंटर्स द्वारा प्रबंधित नौकरियां। –

उत्तर

12

जावा के सभी 'पॉइंटर्स' (संदर्भ) स्मार्ट पॉइंटर्स हैं।

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

हालांकि जावा के संदर्भ पॉइंटर्स से थोड़ा अलग हैं। जावा सी ++ में दिखाई देने वाले सभी सूचक मूल्यों और गणित को हटा देता है। इसलिए, जब भी आप कोई नई ऑब्जेक्ट बनाते हैं और इसे एक चर में संग्रहीत करते हैं, तो आप इसे 'स्मार्ट पॉइंटर' के जावा के संस्करण में संग्रहीत कर रहे हैं।

+1

आप जावा के संदर्भों और सी ++ के स्मार्ट पॉइंटर्स के बीच क्या अंतर रखते हैं, इस बारे में विस्तृत जानकारी देना चाहेंगे। – Pacerier

+0

स्मार्ट पॉइंटर्स जब फ्री और विनाशक कहलाते हैं तो डेवलपर नियंत्रण देते हैं। कम विलंबता प्रोग्रामिंग के लिए, वे प्रतिक्रिया समय में "jitters" को खत्म करते हैं जो जावा में आम हैं। ऑटो पॉइंटर्स भी ऐसा करते हैं, और एक बेहतर - ढेर के वास्तविक भाग को उपलब्ध होने के बजाय वास्तविक वस्तु को ढेर पर डालकर, वे बेहतर इलाके प्रदान करते हैं। दोनों विशेषताएं हैं जो मुझे खेद है कि जावा में अनुपलब्ध है। –

3

नहीं, जावा में किसी भी कक्षा के कोई संकेतक नहीं हैं। आम तौर पर, आपको स्मार्ट पॉइंटर्स की आवश्यकता नहीं है क्योंकि आपके पास पहले से ही कचरा कलेक्टर है जो स्मृति आवंटन/रिलीज चक्र को स्वत: प्रबंधित करने के लिए संदर्भ गणना करता है।

+0

@ पाब्लो-टीएक्स .. तो केवल कचरा कलेक्टर स्मृति प्रबंधन में मदद करते हैं? – garima

+2

यह बिल्कुल सही नहीं है: जावा ** में एक वस्तु वास्तविक संसाधन के लिए एक सूचक है। –

+0

@garima: सुनिश्चित नहीं है कि मैं आपको प्रश्न समझता हूं, लेकिन हाँ: कचरा कलेक्टर स्मृति प्रबंधन में मदद करते हैं। –

5

हां और नहीं। इसमें कोई नहीं, जावा में पॉइंटर ऑब्जेक्ट की तरह कुछ भी नहीं है। हां इस अर्थ में कि हर वस्तु एक "स्मार्ट सूचक" है, जिसका अर्थ है कि यह कचरा इकट्ठा करने के अधीन है और बोलने के लिए अपने जीवनकाल का ख्याल रखता है।

6

मैंने केवल स्मृति प्रबंधन के संदर्भ में स्मार्ट पॉइंटर्स के बारे में सुना है। चूंकि स्मृति प्रबंधन जावा प्लेटफॉर्म के मूल में है, इसके लिए स्पष्ट रूप से इसकी आवश्यकता नहीं है।

दिमाग में आने वाले सबसे नज़दीकी मैच java.lang.ref.WeakReference और java.lang.ref.SoftReference हैं क्योंकि वे कुछ डिग्री पर कचरा संग्रहण को अनुकूलित करने की अनुमति देते हैं।

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