खोज…


विभिन्न संदर्भ प्रकार

java.lang.ref पैकेज संदर्भ-ऑब्जेक्ट क्लासेस प्रदान करता है, जो कचरे के संग्रहकर्ता के साथ सीमित डिग्री का समर्थन करता है।

जावा के चार मुख्य संदर्भ प्रकार हैं। वो हैं:

  • मजबूत संदर्भ
  • कमजोर संदर्भ
  • नरम संदर्भ
  • प्रेत संदर्भ

1. मजबूत संदर्भ

यह वस्तुओं को बनाने का सामान्य रूप है।

MyObject myObject = new MyObject();

चर धारक बनाए गए ऑब्जेक्ट के लिए एक मजबूत संदर्भ धारण कर रहा है। जब तक यह चर लाइव है और यह मान रखता है, तब तक कचरा संग्रहकर्ता द्वारा MyObject उदाहरण एकत्र नहीं किया जाएगा।

2. कमजोर संदर्भ

जब आप किसी ऑब्जेक्ट को अधिक समय तक नहीं रखना चाहते हैं, और आपको किसी ऑब्जेक्ट के लिए आवंटित मेमोरी को जल्द से जल्द खाली / खाली करने की आवश्यकता है, तो ऐसा करने का तरीका है।

WeakReference myObjectRef = new WeakReference(MyObject);

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

जब आपको आपके द्वारा बनाई गई वस्तु की आवश्यकता होती है, तो .get() विधि का उपयोग करें:

myObjectRef.get();

निम्नलिखित कोड इसे उदाहरण देगा:

WeakReference myObjectRef = new WeakReference(MyObject);
System.out.println(myObjectRef.get()); // This will print the object reference address
System.gc();
System.out.println(myObjectRef.get()); // This will print 'null' if the GC cleaned up the object

3. नरम संदर्भ

नरम संदर्भ कमजोर संदर्भों की तुलना में थोड़ा मजबूत होते हैं। आप निम्न के रूप में एक नरम संदर्भित ऑब्जेक्ट बना सकते हैं:

SoftReference myObjectRef = new SoftReference(MyObject);

वे कमजोर संदर्भ से अधिक दृढ़ता से मेमोरी पर पकड़ कर सकते हैं। यदि आपके पास पर्याप्त मेमोरी सप्लाई / संसाधन हैं, तो कचरा संग्राहक नरम संदर्भों को उत्साहपूर्वक साफ नहीं करेगा, क्योंकि कमजोर संदर्भ।

शीतल संदर्भों को कैशिंग में उपयोग करना आसान है। आप एक कैश के रूप में नरम संदर्भित ऑब्जेक्ट बना सकते हैं, जहां वे तब तक रखे रहते हैं जब तक कि आपकी मेमोरी खत्म नहीं हो जाती। जब आपकी मेमोरी पर्याप्त संसाधनों की आपूर्ति नहीं कर सकती है, तो कचरा कलेक्टर नरम संदर्भों को हटा देगा।

SoftReference myObjectRef = new SoftReference(MyObject);
System.out.println(myObjectRef.get()); // This will print the reference address of the Object
System.gc();
System.out.println(myObjectRef.get()); // This may or may not print the reference address of the Object

4. प्रेत संदर्भ

यह सबसे कमजोर संदर्भित प्रकार है। यदि आपने Phantom Reference का उपयोग करके ऑब्जेक्ट रेफरेंस बनाया है, तो get() विधि हमेशा शून्य हो जाएगी!

इस संदर्भ का उपयोग यह है कि "प्रेत संदर्भ वस्तुएं, जो कलेक्टर द्वारा निर्धारित किए जाने के बाद निर्धारित की जाती हैं कि उनके संदर्भों को फिर से प्राप्त किया जा सकता है। प्रेत संदर्भों का उपयोग अक्सर अधिक लचीले तरीके से पूर्व-गतिरोध सफाई कार्यों को निर्धारित करने के लिए किया जाता है। जावा अंतिमकरण तंत्र। " - ओरेकल से फैंटम संदर्भ जावदोक से।

आप निम्नलिखित के रूप में प्रेत संदर्भ की एक वस्तु बना सकते हैं:

PhantomReference myObjectRef = new PhantomReference(MyObject);


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow