"হাই, অ্যামিগো!"
"আরে, এলি। তোমার কি আমাকে কিছু বলার আছে?"
"আজ আমরা কথা বলব একটি বস্তু কতক্ষণ মেমরিতে থাকে, যেটিকে অবজেক্টের লাইফটাইমও বলা হয়। একটি বস্তু তৈরি হওয়ার পর, যতক্ষণ না অন্তত একটি ভেরিয়েবল তার ঠিকানা সংরক্ষণ করে ততক্ষণ পর্যন্ত এটি বিদ্যমান (জীবিত) থাকে (অন্তত একটি থাকে) এটির রেফারেন্স)। যদি আর কোন রেফারেন্স না থাকে তবে বস্তুটি মারা যায়। এখানে কিছু উদাহরণ রয়েছে:"
public class MainClass
{
public static void main (String[] args)
{
┏ Tommy
┃ Cat cat = new Cat("Tommy");
┃ cat = null;
┗
┏ Sammy
┃ Cat cat1 = new Cat("Sammy");
┃┏ Missy
┃┃Cat cat2 = new Cat("Missy");
┃┃cat2 = cat1;
┃┗
┃┏ Ginger
┃┃cat1 = new Cat("Ginger");
┃┃cat2 = null;
┃┗
┗
}
}
"টমি অবজেক্টটি তার সৃষ্টি থেকে শুধুমাত্র একটি লাইনের জন্য বিদ্যমান। অবজেক্টের উল্লেখ করার একমাত্র ভেরিয়েবলটি পরের লাইনে নাল সেট করা হয়েছে, তাই অবজেক্টটি জাভা ভার্চুয়াল মেশিন (JVM) দ্বারা ধ্বংস হয়ে গেছে।"
"স্যামি অবজেক্টটি তৈরি হওয়ার পরে cat1 ভেরিয়েবলে সংরক্ষণ করা হয়। অথবা, আরও সঠিকভাবে, ভেরিয়েবলটি এটির একটি রেফারেন্স সঞ্চয় করে। কয়েক লাইন পরে, এই রেফারেন্সটি cat2 এ কপি করা হয় । তারপরে অন্য বস্তুর একটি রেফারেন্স সংরক্ষণ করা হয়। cat1 । এখন, শুধুমাত্র cat2 রেফারেন্স স্যামি । অবশেষে, অবজেক্টের শেষ অবশিষ্ট রেফারেন্সটি মূল পদ্ধতির শেষ লাইনে নাল সেট করা হয়েছে।"
"মিসি অবজেক্টটি তৈরি হওয়ার পরে শুধুমাত্র একটি লাইনের জন্য বিদ্যমান থাকে। পরের লাইনে, cat2 ভেরিয়েবলটি অন্য মানতে সেট করা হয়, এবং Missy এর রেফারেন্সটি হারিয়ে যায়। বস্তুটি আর অ্যাক্সেস করা যায় না, তাই এটিকে আবর্জনা হিসাবে বিবেচনা করা হয়। সিস্টেম (অর্থাৎ বস্তুটি মৃত)।"
"একবার তৈরি হয়ে গেলে, পদ্ধতিটি শেষ না হওয়া পর্যন্ত আদা বস্তুটি বিদ্যমান থাকে। পদ্ধতির শেষে, cat2 ভেরিয়েবলটি ধ্বংস হয়ে যায়, এর পরেই আদা ধ্বংস হয়ে যায়।"
"আমি দেখি."
"কিন্তু যদি আমরা একটি পদ্ধতির মধ্যে একটি ক্যাট অবজেক্ট তৈরি করি এবং একটি উদাহরণ ভেরিয়েবলে এটির একটি রেফারেন্স সংরক্ষণ করি, তাহলে ক্যাট অবজেক্টটি ততক্ষণ বিদ্যমান থাকবে যতক্ষণ না এটি এখনও জীবিত অন্য বস্তু দ্বারা উল্লেখ করা হয়।"
"আসলে, একটি বস্তু সাধারণত সিস্টেম দ্বারা অবিলম্বে ধ্বংস হয় না। জাভা ভার্চুয়াল মেশিন সময়ে সময়ে 'আবর্জনা সংগ্রহ' সঞ্চালন করে, যে বস্তুগুলিকে মুছে ফেলার জন্য চিহ্নিত করা হয়েছে তা ধ্বংস করে। সেই প্রক্রিয়া সম্পর্কে আরও পরে।"
"এবং, যদি আমরা আর কোনো ভেরিয়েবলকে কোনো বস্তুর উল্লেখ না করতে চাই, তাহলে আমরা এটিকে null এ সেট করতে পারি , অথবা এটিকে অন্য কোনো বস্তুর রেফারেন্স নির্ধারণ করতে পারি।"
GO TO FULL VERSION