सॉफ्ट रेफरेंस
सॉफ्ट रेफरेंस का उपयोग अक्सर मेमोरी-सेंसिटिव कैश को लागू करने के लिए किया जाता है। आइए Java में सॉफ्ट रेफरेंस का एक उदाहरण देखें -
उदाहरण
import java.lang.ref.SoftReference;
class Demo{
public void displayMsg(){
System.out.println("नमस्ते");
}
}
public class DemoExample{
public static void main(String[] args){
Demo myInstance = new Demo();
myInstance.displayMsg();
SoftReference mySoftRef = new SoftReference(myInstance);
myInstance = null;
myInstance = mySoftRef.get();
myInstance.displayMsg();
}
} आउटपुट
नमस्ते
नमस्तेDemo नाम की एक क्लास में 'displayMsg' नाम का एक फ़ंक्शन होता है, जो प्रासंगिक संदेश प्रदर्शित करता है। 'DemoExample' नाम की एक अन्य क्लास परिभाषित की गई है, जिसमें मुख्य फ़ंक्शन होता है। यहां, Demo क्लास का एक इंस्टेंस बनाया जाता है, और इस इंस्टेंस पर 'displayMsg' फ़ंक्शन को कॉल किया जाता है। Demo क्लास के लिए एक SoftReference इंस्टेंस बनाया जाता है, और इंस्टेंस को null असाइन किया जाता है। इस सॉफ्ट रेफरेंस ऑब्जेक्ट पर 'get' फ़ंक्शन को कॉल किया जाता है, और पिछले इंस्टेंस को असाइन किया जाता है। इस इंस्टेंस पर 'displayMsg' फ़ंक्शन को कॉल किया जाता है। प्रासंगिक संदेश कंसोल पर प्रदर्शित होता है।
फैंटम रेफरेंस
फैंटम रेफरेंस का उपयोग अक्सर Java फाइनलाइज़ेशन मैकेनिज्म की तुलना में अधिक लचीले तरीके से प्री-मॉर्टम क्लीनअप एक्शन को शेड्यूल करने के लिए किया जाता है।
आइए अब फैंटम रेफरेंस का एक उदाहरण देखें -
उदाहरण
import java.lang.ref.*;
class Demo{
public void displayMsg(){
System.out.println("नमस्ते");
}
}
public class DemoExample{
public static void main(String[] args){
Demo myInstance = new Demo();
myInstance.displayMsg();
ReferenceQueue refQueue = new ReferenceQueue();
PhantomReference phantomRef = null;
phantomRef = new PhantomReference(myInstance, refQueue);
myInstance = null;
myInstance = phantomRef.get();
myInstance.displayMsg();
}
} आउटपुट
नमस्ते
Exception in thread "main" java.lang.NullPointerException
at DemoExample.main(DemoExample.java:22)Demo नाम की एक क्लास में 'displayMsg' नाम का एक फ़ंक्शन होता है जो एक प्रासंगिक संदेश प्रदर्शित करता है। 'DemoExample' नाम की एक अन्य क्लास में मुख्य फ़ंक्शन होता है। इस फ़ंक्शन में Demo क्लास का इंस्टेंस होता है, और इस पर 'displayMsg' फ़ंक्शन को कॉल किया जाता है। फिर, एक ReferenceQueue इंस्टेंस बनाया जाता है। एक और PhantomReference इंस्टेंस बनाया जाता है और 'null' असाइन किया जाता है। फिर, पिछले इंस्टेंस को null असाइन किया जाता है, और फिर इस इंस्टेंस पर 'displayMsg' फ़ंक्शन को कॉल किया जाता है। प्रासंगिक आउटपुट कंसोल पर प्रदर्शित होता है।