[চূড়ান্তকরণ প্রক্রিয়াটির অভ্যন্তরীণে কেবল আরও যোগ করতে চেয়েছিল]
সুতরাং, আপনি একটি বস্তু তৈরি করেন এবং যখন বস্তুটি সংগ্রহ করা হয়, তখন অবজেক্টের Finalize
পদ্ধতিটি কল করা উচিত। তবে এই অতি সাধারণ অনুমানের চেয়ে চূড়ান্তকরণের আরও অনেক কিছুই রয়েছে।
সংক্ষিপ্ত ধারণা ::
যে Finalize
পদ্ধতিগুলি প্রয়োগ করে না, সেখানে মেমরিটি তত্ক্ষণাত পুনরুদ্ধার করা হয়, অবশ্যই যদি না সেগুলি
প্রয়োগের কোডের মাধ্যমে আর পৌঁছানো যায় না
বাস্তবায়ন অবজেক্টস Finalize
পদ্ধতি, ধারণা / বাস্তবায়নের Application Roots
, Finalization Queue
, Freacheable Queue
আগে তারা উদ্ধারকৃত যাবে আসে।
অ্যাপ্লিকেশন কোড দ্বারা যদি তা অ্যাক্সেসযোগ্য না হয় তবে কোনও বস্তুকে আবর্জনা হিসাবে বিবেচনা করা হবে
অনুমান করুন: শ্রেণি / অবজেক্টস এ, বি, ডি, জি, এইচ Finalize
পদ্ধতি এবং সি, ই, এফ, আই, জে বাস্তবায়ন করে না Finalize
পদ্ধতি প্রয়োগ করে ।
যখন কোনও অ্যাপ্লিকেশন একটি নতুন অবজেক্ট তৈরি করে, নতুন অপারেটরটি গাদা থেকে মেমরি বরাদ্দ করে। যদি অবজেক্টের ধরণে কোনও Finalize
পদ্ধতি থাকে তবে অবজেক্টের একটি পয়েন্টার চূড়ান্তকরণের সারিতে স্থাপন করা হয় ।
অতএব সি, ই, এফ, আই, জে অবজেক্টের পয়েন্টার চূড়ান্তকরণের সারিতে যুক্ত হয়। চূড়ান্ত কিউ একটি অভ্যন্তরীণ ডাটা আবর্জনা সংগ্রাহক দ্বারা নিয়ন্ত্রিত স্ট্রাকচার। সারিতে প্রতিটি প্রবেশ একটি বস্তুর দিকে নির্দেশ করে যা বস্তুর স্মৃতি পুনরুদ্ধার করার আগে তার পদ্ধতিটি বলা উচিত । নীচে চিত্রটি বেশ কয়েকটি বস্তুযুক্ত একটি স্তূপ দেখায়। এর মধ্যে কয়েকটি বস্তু অ্যাপ্লিকেশনটির মূল থেকে পৌঁছানো যায়
Finalize
, এবং কিছু না। যখন সি, ই, এফ, আই এবং জে বস্তু তৈরি করা হয়েছিল, তখন। নেট ফ্রেমওয়ার্কটি সনাক্ত করে যে এই বিষয়গুলির জন্য Finalize
পদ্ধতি এবং পয়েন্টারগুলি চূড়ান্তকরণের সারিতে যুক্ত করা হয় ।
যখন কোন সিসি ঘটে (1 ম সংগ্রহ), অবজেক্টস বি, ই, জি, এইচ, আই এবং জে আবর্জনা হতে সংকল্পবদ্ধ হয়। কারণ এ, সি, ডি, এফ এখনও উপরের হলুদ বাক্স থেকে তীরগুলির মাধ্যমে চিত্রিত অ্যাপ্লিকেশন কোড দ্বারা পৌঁছনীয়।
আবর্জনা সংগ্রহকারী এই বিষয়গুলির জন্য পয়েন্টার সন্ধান করে চূড়ান্তকরণের সারিতে স্ক্যান করে । যখন কোনও পয়েন্টার পাওয়া যায়, পয়েন্টারটি চূড়ান্তকরণের সারি থেকে সরানো হয় এবং ফ্রেইচেবল কাতারে যুক্ত হয় ("এফ- পৌঁছনীয় ")। Freachable কিউ অন্য অভ্যন্তরীণ তথ্য আবর্জনা সংগ্রাহক দ্বারা নিয়ন্ত্রিত স্ট্রাকচার। অব্যবহারযোগ্য সারিতে প্রতিটি পয়েন্টার এমন একটি বস্তু সনাক্ত করে যা এটি প্রস্তুত থাকে
Finalize
পদ্ধতিটি কল ।
সংগ্রহের পরে (1 ম সংগ্রহ), পরিচালিত হিপ নীচের চিত্রের মতো কিছু দেখাচ্ছে। নীচে বর্ণিত ব্যাখ্যা:
১।) অবজেক্টস বি, জি এবং এইচ দ্বারা দখল করা মেমরিটি অবিলম্বে পুনরুদ্ধার করা হয়েছে কারণ এই বস্তুগুলির একটি চূড়ান্ত পদ্ধতি নেই যা কল করার প্রয়োজন ছিল ।
২) তবে, E, I, এবং J বিষয়বস্তু দ্বারা দখল করা স্মৃতি পুনরুদ্ধার করা যায়নি কারণ তাদের Finalize
পদ্ধতিটি এখনও কল করা হয়নি। ফাইনালাইজ
পদ্ধতিটি কল করা ফ্রিচিয়েবল কাতারে সম্পন্ন হয় ।
৩) এ, সি, ডি, এফ এখনও উপরের হলুদ বাক্স থেকে তীরগুলির মাধ্যমে চিত্রিত অ্যাপ্লিকেশন কোড দ্বারা পৌঁছনযোগ্য, সুতরাং সেগুলি কোনও ক্ষেত্রেই সংগ্রহ করা হবে না
ফাইনালাইজ পদ্ধতিগুলি কল করার জন্য উত্সর্গীকৃত একটি বিশেষ রানটাইম থ্রেড রয়েছে। যখন ফ্রিচেবলের সারিটি খালি থাকে (যা সাধারণত হয়) তখন এই থ্রেডটি ঘুমায়। কিন্তু এন্ট্রি উপস্থিত হলে, এই থ্রেডটি জাগ্রত হয়, সারি থেকে প্রতিটি এন্ট্রি সরিয়ে দেয় এবং প্রতিটি বস্তুর ফাইনালাইজ পদ্ধতিটিকে কল করে। আবর্জনা সংগ্রাহক পুনরুদ্ধারযোগ্য মেমরিটি সংযোগ করে এবং বিশেষ রানটাইম থ্রেড প্রতিটি বস্তুর Finalize
পদ্ধতি কার্যকর করে ফ্রেইচিয়েবল সারিটি খালি করে । আপনার ফাইনালাইজ পদ্ধতিটি কার্যকর হয়ে গেলে অবশেষে এখানে
পরের বার যখন আবর্জনা সংগ্রহকারীকে আহ্বান করা হবে (২ য় সংগ্রহ), এটি দেখতে পাবে যে চূড়ান্তীকৃত বস্তুগুলি সত্যই আবর্জনা, যেহেতু অ্যাপ্লিকেশনটির শিকড় এটি নির্দেশ করে না এবং ফ্রেইচ্যাবল সারিতে আর এটি চিহ্নিত করা হয় না ( এটিও EMPTY ), সুতরাং বস্তুগুলির জন্য মেমরি (E, I, J) কেবল হ্যাপ থেকে পুনরুদ্ধার করা হয়েছে below নীচের চিত্রটি দেখুন এবং একে একে উপরের চিত্রের সাথে তুলনা করুন
এখানে বোঝার জন্য গুরুত্বপূর্ণ বিষয়টি হ'ল চূড়ান্তকরণের প্রয়োজন এমন বস্তুর দ্বারা ব্যবহৃত স্মৃতি পুনরায় দাবি করতে দুটি জিসি প্রয়োজন । বাস্তবে, এই জিনিসগুলি কোনও পুরানো প্রজন্মের দিকে প্রচারিত হতে পারে বলে দুটিরও বেশি সংগ্রহের ক্যাব এমনকি প্রয়োজনীয়
উল্লেখ্য :: freachable কিউ একটি রুট বিশ্বব্যাপী এবং স্ট্যাটিক ভেরিয়েবল ঠিক শিকড় আছে বলে মনে করা হয়। অতএব, যদি কোনও বস্তু অবলম্বনযোগ্য কাতারে থাকে তবে অবজেক্টটি পৌঁছনীয় এবং এটি আবর্জনা নয়।
শেষ নোট হিসাবে, মনে রাখবেন যে ডিবাগিং অ্যাপ্লিকেশনটি একটি জিনিস, আবর্জনা সংগ্রহ অন্য জিনিস এবং ভিন্নভাবে কাজ করে। এখন পর্যন্ত আপনি অ্যাপ্লিকেশনগুলি ডিবাগ করে জঞ্জাল সংগ্রহ অনুভব করতে পারবেন না, আপনি যদি মেমরিটি এখানে শুরু করতে চান তদন্ত করতে চান ।