গার্বেজ কালেকশন কি

What is Garbage Collection, Python Programming, what is garbage collection in python

গার্বেজ কালেকশন পাইথনের একটি মডিউল য়া কোড কে  একটি নির্দিষ্ট কাজ করার জন্য তৈরি করা হয়েছে এটি একটি আবর্জনা সংগ্রাহক পাইথনের একটি মডিউল এটি পাইথনের সাথে ফ্রী ইনস্টল হয়ে আসে আলাদাভাবে ইন্সটল করার দরকার নেই। এই গার্বেজ কালেকশন মেমোরি থেকে এমন বস্তু মুছে ফেলার জন্য দরকারি যা পাইথন প্রোগ্রামিং ব্যবহৃত হয় না। গার্বেজ কালেকশন এর সংক্ষিপ্ত নাম হল জিসি (gc) গার্বেজ কালেকশন সবচেয়ে সহজ পদ্ধতিতে প্রতিটি বস্তুর গণনা বজায় রাখার জন্য যে বস্তুটি কতবার উল্লেখ করা হয়েছে বা ব্যবহৃত হয়েছে যখন কোন বস্তুকে দুবার রেফারেন্স করা হয় তখন তার রেফারেন্স কাউন্ট হবে 2 যখন কোন বস্তুর কিছু কাউন্ট থাকে তখন একটি প্রোগ্রাম ব্যবহার করা হচ্ছে এবং তাই গার্বেজ কালেকশনটা মেমোরি থেকে সরিয়ে দেবে না যখন রেফারেন্স কাউন্ট 0 দিয়ে কোন বস্তু পাওয়া যায় তখন গার্বেজ কালেকশন বুঝতে পারবে যে বস্তুটি প্রোগ্রাম দ্বারা ব্যবহৃত হয় না এবং তাই এটিকে মেমোরি থেকে মুছে ফেলে। গার্বেজ কালেকশন রেফারেন্স চক্র (Cycle) ব্যবহার করে রেফারেন্স চক্র (Cycle) হল একটি চক্র যা শেষ বস্তুটি প্রথম বস্তুর দিকে নির্দেশ করে উদাহরণস্বরূপ তিনটি বস্তু A,B এবং C নিন যদি বস্তু A ,B এবং C পাইথন প্রোগ্রামিং ব্যবহার না হয় তবুও এই বস্তুগুলোকে গার্বেজ কালেকশন ডিলিট করে দেবে না কারণে বস্তুগুলির প্রত্যেকটির একটি করে রেফারেন্স থাকে যেহেতু প্রতিটি বস্তু রেফারেন্স এক হয় সরাসরি বলতে গেলে বস্তু ভ্যালু এক হয় তাহলে গার্বেজ কালেকশন বস্তুটিকে ডিলিট করবে না আর যদি কিছু ভ্যালু 0 হয় তাহলে গার্বেজ কালেকশন দ্বারা ডিলিট করে দেয়। গার্বেজ কালেকশন বস্তু গুলিকে তিনটি ধাপে শ্রেণীবদ্ধ করে। নতুন তৈরি বস্তুগুলোকে ধাপ 0 হিসাবে বিবেচনা করে। প্রথমবার যখন গার্বেজ কালেকশন মেমরিতে বস্তু পরীক্ষা করে এবং প্রোগ্রাম দ্বারা ব্যবহৃত বস্তুর কারণে মেমোরি থেকে সরিয়ে দেয় না তখন সেটি পরবর্তী ধাপের মধ্যে স্থাপন করা হয়। 
গার্বেজ কালেকশন দ্বিতীয় বারের বস্তু মুছে ফেলার চেষ্টা করে এবং বস্তুটি দ্বিতীয়বার বেঁচে থাকে তারপর এটি ধাপএর মধ্যে যুক্ত করা হয়। এইভাবে পুরনো বস্তু ধাপ 2 এর অন্তর্গত। গার্বেজ কালেকশন ছোট বস্তু গুলি মুছে ফেলার চেষ্টা করে যা প্রোগ্রামে উল্লেখ করা হয় না পুরনো বস্তুর পরিবর্তে।
গার্বেজ কালেকশন অটোমেটিক ভাবে চলে থ্রেশহোল্ড নামক একটি সংখ্যার ওপর ভিত্তি করে পাইথন গার্বেজ কালেকশন সময় নির্ধারণ করে এই সংখ্যাটি গার্বেজ কালেকশন কতবার বস্তুগুলি সংগ্রহ করলো তার একটি ফ্রিকোয়েন্সি উত্থাপন করে।

জিসি মডিউলের get_threshold() পদ্ধতি ব্যবহার করে ফ্রেশহোল্ড নম্বর জানতে পারবে। যখন বেশি বস্তু তৈরি হয় এবং যদি সিস্টেমটি মেমোরির বাইরে চলে যায় তাহলে জিসি (gc) চলবে না। পরিবর্তে পাইথন প্রোগ্রাম ব্যতিক্রম নিক্ষেপ করবে। যখন প্রোগ্রামার নিশ্চিত হন যে তার প্রোগ্রামে কোন রেফারেন্স চক্র (Cycle) নেই তখন গার্বেজ কালেকশন তখন সবচেয়ে উপযুক্ত।

কিছু ক্ষেত্রে যেখানে রেফারেন্স চক্র (Cycle) প্রোগামে পাওয়া যায় সেখানে গার্বেজ কালেকশন ম্যানুয়ালি চালানো ভালো। এই উদ্দেশ্যে জিসি (gc) মডিউলের collect() মেথড ব্যবহার করা যেতে পারে। ম্যানুয়াল গার্বেজ কালেকশন দুটি পদ্ধতিতে করা যেতে পারে time-based এবং event-based নির্দিষ্ট সময়ের ব্যবধানে এটিকে গার্বেজ কালেকশন বলা হলে, এটিকে time-based গার্বেজ কালেকশন বলা হয়। গার্বেজ কালেকশন কে event-based ও বলা হয়। উদাহরণস্বরূপ যখন ব্যবহার করি একটি অ্যাপ্লিকেশন থেকে যোগাযোগ বিচ্ছিন্ন করে তাকে ইভেন্ট কালেকশন বলা হয়। যাইহোক গার্বেজ কালেকশন খুব ঘন ঘন চালানো প্রোগ্রামটির কার্যকারিতা ধীর করে দেবে।
নবীনতর পূর্বতন