আসল উত্তরটি হ'ল নিরাপদ, দক্ষ আবর্জনা সংগ্রহের ব্যবস্থা করার একমাত্র উপায় হল অস্বচ্ছ রেফারেন্সগুলির জন্য ভাষা-স্তরের সমর্থন । (বা, বিপরীতে, এ সরাসরি মেমরির হেরফেরের জন্য ভাষা-স্তরের সমর্থনের অভাব ))
জাভা এবং সি # এটি করতে পারে কারণ তাদের বিশেষ উল্লেখের ধরণ রয়েছে যা ম্যানিপুলেট করা যায় না। এটি রানটাইমকে মেমরির মধ্যে বরাদ্দ হওয়া অবজেক্টগুলি সরানোর মতো কাজ করার স্বাধীনতা দেয় যা উচ্চ-কর্মক্ষমতা জিসি বাস্তবায়নের পক্ষে অত্যন্ত গুরুত্বপূর্ণ।
রেকর্ডের জন্য, কোনও আধুনিক জিসি বাস্তবায়ন রেফারেন্স গণনা ব্যবহার করে না , তাই এটি পুরোপুরি একটি লাল উত্তাপ ring আধুনিক জিসিগুলি প্রজন্মের সংগ্রহ ব্যবহার করে, যেখানে নতুন বরাদ্দগুলি মূলত একইভাবে চিকিত্সা করা হয় যেভাবে স্ট্যাক বরাদ্দগুলি সি ++ এর মতো ভাষায় হয় এবং পরে পর্যায়ক্রমে যে কোনও নতুন বরাদ্দকৃত বস্তু এখনও বেঁচে থাকে সেগুলি পৃথক "বেঁচে থাকা" স্থানটিতে স্থানান্তরিত করা হয় এবং পুরো প্রজন্মকে অবজেক্টস একবারে deallocated হয়।
এই পদ্ধতির উপকারিতা এবং বিপরীতে রয়েছে: বিপরীতটি হ'ল জিসিকে সমর্থন করে এমন কোনও ভাষায় গাদা বরাদ্দ স্ট্যাক বরাদ্দের তুলনায় দ্রুত করে না এমন এবং ক্ষয়ক্ষতিটি হ'ল যে বস্তুগুলির কোনওটি ধ্বংস হওয়ার আগে পরিষ্কার-পরিচ্ছন্নতার প্রয়োজন হয় either একটি পৃথক প্রক্রিয়া প্রয়োজন (উদাহরণস্বরূপ সি # 'এর using
কীওয়ার্ড) বা অন্যথায় তাদের ক্লিনআপ কোড অ-নিরস্তামূলকভাবে চালিত হয়।
মনে রাখবেন যে উচ্চ-পারফরম্যান্স জিসির একটি কী হ'ল একটি বিশেষ শ্রেণীর রেফারেন্সের জন্য ভাষা সমর্থন থাকতে হবে। সি এর ভাষা সমর্থন নেই এবং কখনই করবে না; যেহেতু সি ++ এর অপারেটর ওভারলোডিং রয়েছে, এটি একটি GC'd পয়েন্টার ধরণের অনুকরণ করতে পারে, যদিও এটি সাবধানতার সাথে করতে হবে। আসলে, যখন মাইক্রোসফ্ট তাদের সি ++ এর উপভাষা আবিষ্কার করেছিল যা সিএলআরের অধীনে চলবে (। নেট রানটাইম), তাদের Foo^
"সি + স্টাইল রেফারেন্স" (যেমন ) "সি ++ - স্টাইলের রেফারেন্স" থেকে আলাদা করার জন্য একটি নতুন সিনট্যাক্স আবিষ্কার করতে হয়েছিল (যেমনFoo&
)
সি ++ এর কী আছে এবং সি ++ প্রোগ্রামাররা নিয়মিত যা ব্যবহার করেন তা হ'ল স্মার্ট পয়েন্টার , যা সত্যিই কেবল একটি রেফারেন্স-গণনা প্রক্রিয়া। আমি রেফারেন্স গণনাটিকে "সত্য" জিসি হিসাবে বিবেচনা করব না, তবে এটি ম্যানুয়াল মেমরি পরিচালনা বা সত্য জিসির তুলনায় ধীর পারফরম্যান্সের ব্যয় করে অনেকগুলি একই সুবিধা প্রদান করে, তবে নির্মূলবাদী ধ্বংসের সুবিধা নিয়ে।
দিনের শেষে, উত্তরটি সত্যিই একটি ভাষা নকশা বৈশিষ্ট্যে ফোটে। সি একটি পছন্দ করেছে, সি ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++> সর্বাধিক উদ্দেশ্য দুর্ভাগ্যক্রমে, কোনও রূপালী বুলেট নেই, তবে বিভিন্ন বিকল্পের সাথে পরিচিত হওয়ার কারণে আপনি বর্তমানে যে প্রোগ্রামটি তৈরির চেষ্টা করছেন তার জন্য সঠিক একটি বাছাই করতে আপনাকে সহায়তা করবে।