সফ্ট রেফারেন্স প্রায়ই মেমরি-সংবেদনশীল ক্যাশে বাস্তবায়ন করতে ব্যবহৃত হয়। আসুন আমরা জাভা -
-এ সফ্ট রেফারেন্সের একটি উদাহরণ দেখিউদাহরণ
import java.lang.ref.SoftReference; class Demo{ public void display_msg(){ System.out.println("Hello there"); } } public class Demo_example{ public static void main(String[] args){ Demo my_instance = new Demo(); my_instance.display_msg(); SoftReference<Demo> my_softref = new SoftReference<Demo>(my_instance); my_instance = null; my_instance = my_softref.get(); my_instance.display_msg(); } }
আউটপুট
Hello there Hello there
ডেমো নামের একটি ক্লাসে 'display_msg' নামের একটি ফাংশন রয়েছে, যা প্রাসঙ্গিক বার্তা প্রদর্শন করে। 'Demo_example' নামে আরেকটি ক্লাস সংজ্ঞায়িত করা হয়েছে, যেটিতে প্রধান ফাংশন রয়েছে। এখানে, ডেমো ক্লাসের একটি দৃষ্টান্ত তৈরি করা হয়েছে, এবং এই উদাহরণে 'display_msg' ফাংশনটি কল করা হয়েছে। ডেমো ক্লাসের জন্য ASoftReference দৃষ্টান্ত তৈরি করা হয়, এবং দৃষ্টান্তটি null এ বরাদ্দ করা হয়। 'গেট' ফাংশনটিকে এই সফ্টরেফারেন্স অবজেক্টে বলা হয় এবং পূর্ববর্তী উদাহরণে বরাদ্দ করা হয়। এই উদাহরণে 'display_msg' ফাংশন বলা হয়। প্রাসঙ্গিক বার্তা কনসোলে প্রদর্শিত হয়৷
৷ফ্যান্টম রেফারেন্সগুলি প্রায়শই জাভা চূড়ান্তকরণ প্রক্রিয়ার সাথে সম্ভবের চেয়ে আরও নমনীয় উপায়ে প্রাক-মর্টেম ক্লিনআপ অ্যাকশনের সময় নির্ধারণের জন্য ব্যবহৃত হয়।
আসুন এখন ফ্যান্টম রেফারেন্স -
এর একটি উদাহরণ দেখিউদাহরণ
import java.lang.ref.*; class Demo{ public void display_msg(){ System.out.println("Hello there"); } } public class Demo_example{ public static void main(String[] args){ Demo my_instance = new Demo(); my_instance.display_msg(); ReferenceQueue<Demo> refQueue = new ReferenceQueue<Demo>(); PhantomReference<Demo> phantomRef = null; phantomRef = new PhantomReference<Demo>(my_instance,refQueue); my_instance = null; my_instance = phantomRef.get(); my_instance.display_msg(); } }
আউটপুট
Hello there Exception in thread "main" java.lang.NullPointerException at Demo_example.main(Demo_example.java:22)
ডেমো নামের একটি ক্লাসে ‘display_msg’ নামের একটি ফাংশন রয়েছে যা একটি প্রাসঙ্গিক বার্তা প্রদর্শন করে। Demo_example নামের আরেকটি ক্লাসে প্রধান ফাংশন রয়েছে। এই ফাংশনে ডেমো ক্লাসের ইন্সট্যান্স থাকে এবং এটিতে 'display_msg' ফাংশন বলা হয়। তারপর, একটি রেফারেন্স কিউ উদাহরণ তৈরি করা হয়। আরেকটি ফ্যান্টমরেফারেন্স উদাহরণ তৈরি করা হয়েছে এবং 'নাল' এ বরাদ্দ করা হয়েছে। তারপর, আগের ইন্সট্যান্সটি নাল এ বরাদ্দ করা হয়, এবং তারপর এই ইন্সট্যান্সে 'display_msg' ফাংশনটি কল করা হয়। কনসোলে প্রাসঙ্গিক আউটপুট প্রদর্শিত হয়।