যখন কোনও আবর্জনা সংগ্রহকারী গাদা জিনিসগুলিতে যোগাযোগ করে, তখন এটি স্ট্যাকের রেফারেন্সগুলি পরিবর্তন করে?


18

এটি একটি সাধারণ প্রশ্নের মতো বলে মনে হচ্ছে তবে বিষয়টিতে প্রচুর পড়ার পরেও আমি এখনও একটি নির্দিষ্ট উত্তর খুঁজে পাইনি (সম্ভবত এটি এত সহজ)।

আমার প্রশ্নটি হ'ল: কোনও আবর্জনা সংগ্রহকারী যখন গাদা জিনিসগুলিতে যোগাযোগ করে তখন স্ট্যাকের those বস্তুর উল্লেখগুলি কীভাবে আপডেট হয়? আমি দুটি সম্ভাব্য সমাধান সম্পর্কে ভাবতে পারি:

  1. স্ট্যাকের (এবং গাদা রেফারেন্স) মাধ্যমে যান এবং অবজেক্টটির নতুন অবস্থানের দিকে নির্দেশ করার জন্য রেফারেন্সটি আপডেট করুন। চলার উপমা অনুসারে, এটি আপনার ঠিকানা সম্বলিত যে কোনও ব্যক্তিকে একটি চিঠি পাঠানো এবং তাদের নতুন ঠিকানা দিয়ে তাদের ঠিকানা পুস্তিকা আপডেট করতে বলার মতো be
  2. টেবিলের জন্য কিছু ধরণের সরবরাহ করুন। এটি স্থানীয় পোস্ট অফিসের সাথে একটি ফরোয়ার্ডিং ঠিকানা রেখে দেওয়ার মতো হবে।

আবর্জনা সংগ্রহকারীরা মূলত এই দুটি পদ্ধতির একটি ব্যবহার করেন? অন্য কোন পদ্ধতি? উভয়?



@ স্টিভেন বার্নাপ আমি ভুল হলে আমাকে সংশোধন করি তবে আমি বিশ্বাস করি যে আপনি যে থ্রেডটি সংযুক্ত করেছেন তার কোনও নির্দিষ্ট উত্তর নেই। তারাও ঠিক এই সঠিক প্রশ্নটি নিয়ে জল্পনা করছে বলে মনে হয়েছিল। আমার ভুল পড়ে থাকতে পারে। যদি তারা এই প্রশ্নের উত্তর সরবরাহ করে, যদি আপনি কিছু মনে করেন না, আমি মনে করি ভবিষ্যতের এসই ব্যবহারকারীদের (এবং আমার!) জন্য উত্তরটি এখানে সংক্ষিপ্ত করা সহায়ক হবে
টডোরোজো

আপনি যে জিনিসটির কথা বলছেন তার পদটি হ'ল "চলন্ত আবর্জনা সংগ্রহকারী"। আমি স্পষ্টভাবে জানি না যে তারা কীভাবে ব্যবহৃত হয়।
রোবট

উত্তর:


9

আমার এ সম্পর্কে কোনও সুনির্দিষ্ট দক্ষতা নেই তবে আমার বোধগম্যতা হল প্রথম পদ্ধতিটি সাধারণত ব্যবহৃত হয়।

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

নীতিগতভাবে অনুসন্ধান সারণী পদ্ধতির কাজ করতে পারে। যাইহোক এটি সমস্ত পয়েন্টার অ্যাক্সেসগুলিকে 2 পদক্ষেপ গ্রহণ করতে হবে। এটি সাধারণ রান সময়গুলিতে বিশাল পারফরম্যান্স প্রভাব ফেলবে। বিশেষত অনেক ছোট ছোট বস্তুর ব্যবহারের ক্ষেত্রে। (যা এমন একটি ক্ষেত্রে যেখানে আর্টির জিসি প্রোগ্রামগুলি সাধারণত রেফারেন্স গণনাকে মারধর করে))


3
আমি যুক্ত করব যে আমি মনে করি যে জিসি সম্ভবত তাদের চেষ্টা না করে জিনিসপত্রকে গাদা করে না নেওয়ার চেষ্টা করছেন । আজকের মাল্টি-প্রসেসর বিশ্বে এটি অবশ্যই একটি সিঙ্ক্রোনাইজেশন দুঃস্বপ্ন হতে হবে যখন তাদের যখন রেফারেন্সগুলি ব্যবহার করে এমন একটি প্রোগ্রাম চলছে সেই সময় গাদা কিছুতে সমস্ত রেফারেন্স আপডেট করতে হয়। দেখার টেবিলটি এটিকে সহজতর করবে, তবে আমি মনে করি এটি আদর্শের চেয়ে ব্যতিক্রম so +1 আকর্ষণীয় প্রশ্ন, +1 ভাল উত্তর।
গ্লেনপিটারসন

3
@ গ্লেনপিটারসন অনেক জিসি প্রকৃতপক্ষে জিনিসপত্রকে গাদা করে না এবং এই সমস্যার মুখোমুখি হন না। কিন্তু সংজ্ঞা অনুসারে একটি কমপ্যাক্টিং জিসি লাইভ অবজেক্টগুলিকে চারপাশে মেমরিকে ডিফ্র্যাগমেন্টে নিয়ে যায়।
বুটিলি

@ গ্লেনপিটারসন এটি একটি ভাল পর্যবেক্ষণ যে স্তূপে স্টাফগুলি হ'ল একটি বিশাল সিঙ্ক্রোনাইজেশন ব্যথা, এটি একেবারেই উপেক্ষা করা হয়নি যদিও এর ফলে জি.সি. কমপ্যাকশন চলমান প্রক্রিয়াটিতে বিশাল আকারের ছড়িয়ে পড়েছে। লম্বা মিউটেক্সের সংযোগের ফলে বড় আকারের হিপ আপডেটগুলি এড়ানোর জন্য বৃহত হিপ আপডেটগুলি এড়াতে এগুলি যতটা সম্ভব অল্প সময়ের জন্য অবজেক্টগুলি রাখার জন্য সমস্ত কিছু করতে বলা হয়েছিল এটিই একমাত্র বৃহত্তম কারণ। এই স্টাফটি যেভাবে আচরণ করে সে সম্পর্কে অজ্ঞতা যা প্রেমের সাথে জিসি ফ্রিকআউট মোড হিসাবে পরিচিত।
জিমি হোফা

2
আসল ম্যাকিনটোস এবং পাম ওএস উভয়ই এর স্মৃতি পরিচালনার জন্য লক-টেবিল পদ্ধতির ব্যবহার করেছিল। সারণীতে পয়েন্টারগুলিকে হ্যান্ডলগুলি হিসাবে উল্লেখ করা হয়েছিল। একটি স্থানান্তরিত জিসি অবশ্যই চলমান যে কোনও অবজেক্টের প্রতি প্রতিটি রেফারেন্সের ইতিবাচক ইতিবাচক অবস্থান জানতে হবে; এই জাতীয় উদ্দেশ্যে একটি একক টেবিল ব্যবহার জিনিসগুলি ব্যাপকভাবে সরল করে।
সুপারক্যাট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.