जिस तरह से डेटा कचरा एकत्र किया जाता है, उसके आधार पर चार अलग-अलग प्रकार के संदर्भ होते हैं।
- मजबूत संदर्भ
- कमजोर संदर्भ
- सॉफ्ट संदर्भ
- प्रेत संदर्भ
मजबूत संदर्भ
यह संदर्भ वस्तु का डिफ़ॉल्ट प्रकार है। सक्रिय मजबूत संदर्भ वाली वस्तु को कूड़ा-करकट नहीं किया जा सकता है। यह तभी संभव है जब वेरिएबल जो दृढ़ता से संदर्भित है, शून्य की ओर इशारा करता है। आइए एक उदाहरण देखें -
उदाहरण
class Demo { //Some functionality } public class Demo_example{ public static void main(String[] args){ Demo my_inst = new Demo(); my_inst = null; } }
कमजोर संदर्भ
वे संदर्भ वस्तु के डिफ़ॉल्ट वर्ग नहीं हैं, इसलिए स्पष्ट रूप से निर्दिष्ट करने की आवश्यकता है। यह आम तौर पर WeakHashmap के साथ प्रयोग किया जाता है, ताकि प्रविष्टि वस्तुओं को संदर्भित किया जा सके। ऐसे कमजोर संदर्भों को जावा वर्चुअल मशीन द्वारा कचरा संग्रहण के रूप में चिह्नित किया जाता है। ऐसे संदर्भ 'java.lang.ref.WeakReference' वर्ग का उपयोग करके बनाए जाते हैं।
आइए एक उदाहरण देखें -
उदाहरण
import java.lang.ref.WeakReference; class Demo{ public void display_msg(){ System.out.println("Hello"); } } public class Demo_sample{ public static void main(String[] args){ Demo inst = new Demo(); inst.display_msg(); WeakReference<Demo> my_weak_ref = new WeakReference<Demo>(inst); inst = null; inst = my_weak_ref.get(); inst.display_msg(); }
आउटपुट
Hello Hello
डेमो नाम की एक क्लास में 'display_msg' नाम का एक फंक्शन होता है। यह फ़ंक्शन एक प्रासंगिक संदेश प्रदर्शित करता है। 'Demo_sample' नामक एक अन्य वर्ग में, मुख्य कार्य परिभाषित किया गया है, और डेमो क्लासिस का एक उदाहरण बनाया गया है। इंस्टेंस पर 'display_msg' फ़ंक्शन को कॉल किया जाता है। डेमो क्लास के लिए एक कमजोर संदर्भ बनाया गया है, और डेमो इनसेट को शून्य पर असाइन किया गया है, और फ़ंक्शन को फिर से कॉल किया जाता है। कंसोल पर प्रासंगिक आउटपुट प्रदर्शित होता है।