मेमोरी-सेंसिटिव कैश को लागू करने के लिए अक्सर सॉफ्ट रेफरेंस का उपयोग किया जाता है। आइए जावा में सॉफ्टरेफरेंस का एक उदाहरण देखें -
उदाहरण
आयात करें }}सार्वजनिक वर्ग डेमो_उदाहरण {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) { डेमो my_instance =नया डेमो (); my_instance.display_msg (); सॉफ्ट रेफरेंस <डेमो> my_softref =नया सॉफ्ट रेफरेंस <डेमो> (my_instance); my_instance =शून्य; my_instance =my_softref.get (); my_instance.display_msg (); }}आउटपुट
नमस्कार, नमस्ते वहाँ
डेमो नामक एक वर्ग में 'डिस्प्ले_एमएसजी' नामक एक फ़ंक्शन होता है, जो प्रासंगिक संदेश प्रदर्शित करता है। 'डेमो_उदाहरण' नामक एक अन्य वर्ग परिभाषित किया गया है, जिसमें मुख्य कार्य शामिल है। यहां, डेमो क्लास का एक उदाहरण बनाया गया है, और इस उदाहरण पर 'display_msg' फ़ंक्शन को कॉल किया जाता है। डेमो क्लास के लिए ASoftReference उदाहरण बनाया गया है, और इंस्टेंस को शून्य पर असाइन किया गया है। इस सॉफ्टरेफरेंस ऑब्जेक्ट पर 'गेट' फंक्शन को कॉल किया जाता है, और पिछले इंस्टेंस को सौंपा जाता है। इस उदाहरण पर 'डिस्प्ले_एमएसजी' फ़ंक्शन को कॉल किया जाता है। प्रासंगिक संदेश कंसोल पर प्रदर्शित होता है।
प्रेत संदर्भों का उपयोग अक्सर पूर्व-मॉर्टम क्लीनअप क्रियाओं को जावा अंतिमकरण तंत्र के साथ संभव से अधिक लचीले तरीके से शेड्यूल करने के लिए किया जाता है।
आइए अब प्रेत संदर्भों का एक उदाहरण देखें -
उदाहरण
import java.lang.ref.*;class Demo{ public void display_msg(){ System.out.println("Hello There"); }}सार्वजनिक वर्ग डेमो_उदाहरण {सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] तर्क) { डेमो my_instance =नया डेमो (); my_instance.display_msg (); ReferenceQueuerefQueue =new ReferenceQueue (); PhantomReference phantomRef =null; फैंटमरेफ =नया फैंटम रेफरेंस <डेमो> (my_instance, refQueue); my_instance =शून्य; my_instance =phantomRef.get (); my_instance.display_msg (); }}
आउटपुट
हैलो देयरएक्सप्शन इन थ्रेड "मेन" java.lang.NullPointerExceptionat Demo_example.main(Demo_example.java:22)
डेमो नामक एक वर्ग में 'डिस्प्ले_एमएसजी' नामक एक फ़ंक्शन होता है जो एक प्रासंगिक संदेश प्रदर्शित करता है। डेमो_उदाहरण नामक एक अन्य वर्ग में मुख्य कार्य होता है। इस फ़ंक्शन में डेमो क्लास का उदाहरण होता है, और उस पर 'display_msg' फ़ंक्शन को कॉल किया जाता है। फिर, एक ReferenceQueue इंस्टेंस बनाया जाता है। एक और फैंटम रेफरेंस इंस्टेंस बनाया गया है और 'नल' को सौंपा गया है। फिर, पिछला इंस्टेंस शून्य को सौंपा गया है, और फिर इस उदाहरण पर 'display_msg' फ़ंक्शन को कॉल किया जाता है। कंसोल पर प्रासंगिक आउटपुट प्रदर्शित होता है।