রেফারেন্স গণনা জিসি বনাম বনাম জিসিকে ট্রেস করা কোনও ভাষা সম্পত্তি বা বাস্তবায়ন সম্পত্তি?


9

আমরা মাঝে মাঝে শুনি "সুইফ্ট ক্লাসিক (ট্রেসিং) জিসি করেন না, এটি আরসি ব্যবহার করে।"

তবে আমি নিশ্চিত নই যে সুইফট শব্দার্থবিদ্যায় এমন কিছু আছে কিনা যার জন্য রেফারেন্স গণনা প্রয়োজন। মনে হচ্ছে ট্রেসিং জিসি ব্যবহারের জন্য কেউ নিজের সুইফ্ট সংকলক এবং রানটাইম তৈরি করতে পারে।

সুতরাং সুইফ্ট সম্পর্কে "রেফারেন্স-গণনা" ঠিক কী? অ্যাপলের বাস্তবায়ন নাকি নিজেই ভাষা? ভাষা বা গ্রন্থাগারের এমন কিছু অংশ রয়েছে যা এআরসিকে এত দৃ strongly়ভাবে সমর্থন করে যে আমরা সেই লেবেলটি ভাষার জন্যই ব্যবহার করতে পারি?

উত্তর:


9

সুইফ্ট গ্যারান্টি দেয় যে একবার কোনও জিনিসের সর্বশেষ রেফারেন্সটি বাদ দিলে বস্তুটি ডিনিটাইজড হয়ে যায়, এবং deinitকোডটি সঙ্গে সঙ্গে চালানো হয়।

জিসির মাধ্যমে এই ধরণের গ্যারান্টি অর্জন সম্ভব নয় - কমপক্ষে, পারফরম্যান্স ত্যাগ ছাড়াই নয়। স্ট্যান্ডার্ড জিসি প্রক্রিয়াগুলি কেবল deinitকোডটি শেষ পর্যন্ত চালিত হয় তা নিশ্চিত করে , যেমন পরবর্তী জিসি চক্রে। সুনির্দিষ্ট শব্দার্থবিজ্ঞানের জন্য আপনার কোথাও রেফারেন্স গণনা দরকার।


3
আহ, সুতরাং deinitএকটি কীওয়ার্ড হিসাবে উপস্থিতি এবং এর সাথে যুক্ত শব্দার্থবিজ্ঞানগুলি প্রকৃতপক্ষে বাস্তবায়নের পরিবর্তে ভাষাতে রেফারেন্স গণনাকে স্কোয়ার হিসাবে গণ্য করে।
রায় তোয়াল

2
যখনই কোনও কিছু বিলোপযুক্ত হয় তখন কোনও অ্যাক্সেসযোগ্য অবজেক্টের জন্য যাচাই করতে কোনও জিসিড রানটাইম বাধা দেয় না। এটি কেবল মারাত্মকভাবে অক্ষম।
রাফায়েল

@ রাফেল সম্পাদিত এই পয়েন্টটিতে আরও সুনির্দিষ্ট হওয়ার জন্য।
চি

3

চি দ্রুত সম্পর্কে শরীরের নির্দিষ্ট প্রশ্নের উত্তর দিয়েছে, এই উত্তর শিরোনামে আরও সাধারণ প্রশ্নের উত্তর দেয়।

রেফারেন্স গণনা জিসি বনাম বনাম জিসিকে ট্রেস করা কোনও ভাষা সম্পত্তি বা বাস্তবায়ন সম্পত্তি?

রেফারেন্স গণনা জিসি এবং ট্রেসিং জিসি প্রোগ্রামারকে বিভিন্ন গ্যারান্টি সরবরাহ করে।

রেফারেন্স গণনা প্রোগ্রামের প্রবাহের যেখানে নির্ধারিত হয় যেখানে কোনও বস্তু ধ্বংস হয়ে যায়, তা গুরুত্বপূর্ণ হতে পারে যদি বস্তুটি দুষ্প্রাপ্য সংস্থানগুলির মালিক হয় যা দ্রুত মুক্তি দিতে হবে। অন্যদিকে এটি "শক্তিশালী" রেফারেন্সগুলির চক্র নিয়ে কাজ করতে পারে না।

এটি কোনও স্বতন্ত্র ভাষার স্পেসিফিকেশন অবলম্বন করে যদি কোনও বৈশিষ্ট্য গ্যারান্টেড হয় এবং সেইজন্য কোন পছন্দগুলি সম্মতিযুক্ত বাস্তবায়নের জন্য উপলব্ধ।


4
এটি পুনরায় হিসাব এবং জিসি একত্রিত করাও সম্ভব। তারপরে ভাষাটি দস্তাবেজ করতে পারে যে অবজেক্টগুলি তাদের ডেস্ট্রাক্টরকে নির্দ্বিধিত করার সাথে সাথেই মৃত্যুদন্ড কার্যকর করা হয়েছে (এক রূপে বা অন্য কোনও রূপে আবরণ গণনা করা) এবং সেই রেফারেন্স চক্রটি শেষ পর্যন্ত বিনষ্ট হয়ে যাবে (জিসির কিছু ফর্ম বোঝায়)। বিকল্পভাবে, বাস্তবায়ন এটি করতে পারে যখন ভাষা ধ্বংসকারীদের সঞ্চালনের সময় গ্যারান্টি দেয় না (আইআইআরসি এটি পাইথনের ঘটনা এবং এর রেফারেন্স বাস্তবায়নের ক্ষেত্রে), এক্ষেত্রে এটি একটি বাস্তবায়ন সম্পত্তি হবে।
গিলস 'দু: খিত হওয়া বন্ধ করুন'

1

আপনি সুইফট হিসাবে পরিচিত ভাষাটি নিতে এবং এটির নাম পরিবর্তন করে "সুইচ উইথ এআরসি" করতে পারেন। তারপরে আপনি ঠিক একই সিনট্যাক্সের সাহায্যে "সুইফট উইথ জিসি" নামে একটি নতুন ভাষা তৈরি করতে পারেন, তবে কখন অবজেক্টগুলি বাতিল করা হবে সে সম্পর্কে কম গ্যারান্টি দিয়ে।

এআরসি সহ সুইফটে, একবার রেফারেন্স গণনা 0 হলে অবজেক্টটি চলে যাবে। আবর্জনা সংগ্রহের সাথে, যতক্ষণ না আপনার দুর্বল রেফারেন্স থাকে আপনি অবজেক্টটিকে "পুনরুদ্ধার" করার জন্য সেই দুর্বল রেফারেন্সটিকে শক্তিশালী রেফারেন্স হিসাবে নির্ধারণ করতে পারেন। (সুইফটে, একবার রেফারেন্স গণনা 0 হলে দুর্বল উল্লেখগুলি শূন্য হয়); এটি একটি প্রধান পার্থক্য।

এবং অবশ্যই এআরসি সহ সুইফ্ট গ্যারান্টি দেয় যে শেষ রেফারেন্স গণনাটি হত্যার সাথে সাথে অবজেক্টটি হ্রাস করা হবে। উদাহরণস্বরূপ, আপনার কাছে ফাইল রাইটার শ্রেণি থাকতে পারে, যেখানে একই সময়ে দুটি ফাইলকে একই ফাইলটিতে লেখার অনুমতি দেওয়া হয় না। এআরসি সহ সুইফটে আপনি ওল্ড রাইটার বলতে পারেন = শূন্য; newWriter = ফাইল রাইটার (...) এবং আপনি জানেন যে নতুন ফাইল রাইটার কেবল পুরানোটি মুছে ফেলার পরে তৈরি করা হবে (যদি আপনি অন্য কোনও রেফারেন্স চারপাশে রাখেন না); জিসি সহ সুইফটে এটি কাজ করবে না।

আর একটি পার্থক্য হ'ল "সুইফ্ট উইথ এআরসি"-তে, কেবলমাত্র শক্তিশালী রেফারেন্স চক্রের মাধ্যমে উল্লেখ করা অবজেক্টগুলি আসলে বাস্তবে পৌঁছনীয় নয়, অবনমিত না হওয়ার গ্যারান্টিযুক্ত

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.