যদিও আমি এই ফাংশনটির সাথে খেলার গুরুতর প্রভাবগুলি বুঝতে পারি (বা কমপক্ষে এটি আমার যা মনে হয়), তবে আমি কেন দেখতে পেলাম না যে এটি কেন এই জিনিসগুলির মধ্যে একটি হয়ে উঠছে যা সম্মানজনক প্রোগ্রামাররা কখনও ব্যবহার করবে না, এমনকি যারা জানেন না তারাও এটা কি জন্য।
ধরা যাক আমি এমন একটি অ্যাপ্লিকেশন বিকাশ করছি যেখানে ব্যবহারকারী কী করছে তার উপর নির্ভর করে মেমোরির ব্যবহারের পরিমাণটি পৃথক। অ্যাপ্লিকেশন লাইফ চক্র দুটি মূল পর্যায়ে বিভক্ত করা যেতে পারে: সম্পাদনা এবং রিয়েল-টাইম প্রক্রিয়াকরণ। সম্পাদনার পর্যায়ে ধরুন, বিলিয়ন বা এমনকি কোটি কোটি বস্তু তৈরি হয়েছে; তাদের মধ্যে কিছু ছোট এবং তাদের কিছু না, কারওর ফাইনালাইজার থাকতে পারে এবং কিছু নাও থাকতে পারে এবং ধরুন তাদের জীবনকাল খুব কম মিলিসেকেন্ড থেকে দীর্ঘ সময় ধরে পরিবর্তিত হয়। এর পরে, ব্যবহারকারী রিয়েল-টাইম পর্যায়ে স্যুইচ করার সিদ্ধান্ত নিয়েছে। এই মুহুর্তে, ধরুন যে কর্মক্ষমতা একটি মৌলিক ভূমিকা পালন করে এবং প্রোগ্রামের প্রবাহে সামান্যতম পরিবর্তন বিপর্যয়কর পরিণতি আনতে পারে। অবজেক্ট তৈরির পরে অবজেক্ট পুলগুলি ব্যবহার করে সর্বনিম্নভাবে কমিয়ে আনতে হবে তবে এরপরে, জিসি চিমগুলি অপ্রত্যাশিতভাবে এনে ফেলে দেয় এবং এটিকে ছুঁড়ে ফেলে দেয় এবং কেউ মারা যায়।
প্রশ্ন: এই ক্ষেত্রে, দ্বিতীয় পর্যায়ে প্রবেশের আগে জিসি.কোলেক্ট () কল করা কি বুদ্ধিমানের কাজ হবে না?
সর্বোপরি, এই দুটি পর্যায় কখনই একে অপরের সাথে ওভারল্যাপ হয় না এবং জিসি যে সমস্ত অপ্টিমাইজেশন এবং পরিসংখ্যান সংগ্রহ করতে পারত তা এখানে খুব কম কাজে লাগবে ...
দ্রষ্টব্য: আপনারা কেউ কেউ উল্লেখ করেছেন যে, .NET এর মতো অ্যাপ্লিকেশনটির জন্য সেরা প্ল্যাটফর্ম নাও হতে পারে, তবে এটি এই প্রশ্নের ক্ষেত্রের বাইরে। উদ্দেশ্যটি হ'ল একটি স্পষ্ট করে স্পষ্ট করা যায় যে কোনও জিসি.কলেক্ট () কলটি কোনও অ্যাপ্লিকেশনের সামগ্রিক আচরণ / পারফরম্যান্সকে উন্নত করতে পারে কিনা। আমরা সকলেই একমত যে আপনি যে পরিস্থিতিতে পরিস্থিতিতে এই কাজটি করবেন তা অত্যন্ত বিরল তবে আবারও, জিসি অনুমান করার চেষ্টা করে এবং বেশিরভাগ সময় এটি পুরোপুরি ভাল করে তোলে তবে এটি অনুমান করার বিষয়ে এখনও রয়েছে।
ধন্যবাদ।