.NET- এ "পরিচালিত" বনাম "পরিচালনা না করা" সংস্থানগুলি বলতে কী বোঝায়?


109

.NET- এ পরিচালিত সংস্থান এবং অব্যবস্থাপিত সংস্থান দ্বারা শব্দটি কী বোঝায়? তারা কীভাবে ছবিতে আসে?


উত্তর:


80

"অপরিকল্পিত সংস্থান" শব্দটি সাধারণত কোনও কিছু আবর্জনা সংগ্রাহকের নিয়ন্ত্রণে নয় এমন কিছু বর্ণনা করতে ব্যবহৃত হয় । উদাহরণস্বরূপ, আপনি যদি কোনও ডাটাবেস সার্ভারের সাথে কোনও সংযোগ খোলেন তবে এটি সার্ভারের সংস্থানগুলি (সংযোগ বজায় রাখার জন্য) এবং ক্লায়েন্ট মেশিনে সম্ভবত অন্যান্য নন-নেট সংস্থানগুলি ব্যবহার করবে, যদি সরবরাহকারী পুরোপুরি পরিচালিত কোডটিতে লিখিত না থাকে।

এই কারণেই, ডাটাবেস সংযোগের মতো কোনও কিছুর জন্য আপনাকে এইভাবে আপনার কোড লেখার পরামর্শ দেওয়া হচ্ছে:

using (var connection = new SqlConnection("connection_string_here"))
{
    // Code to use connection here
}

যেহেতু এটি নিশ্চিত করে যে .Dispose()সংযোগ অবজেক্টে ডেকে আনা হয়েছে তা নিশ্চিত করে যে কোনও ব্যবস্থাবিহীন সংস্থান পরিষ্কার করা হয়েছে।


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

12
আরও কিছুটা স্পেসিফিকেশন যুক্ত করা: স্কেল সংযোগ (বা ফাইল স্ট্রিম ইত্যাদি) পরিচালিত সংস্থানসমূহ যা অভ্যন্তরীণভাবে নিয়ন্ত্রণহীন সংস্থানগুলি ব্যবহার করে যা জিসি অজানা।
jimvfr

2
জিমভিএফআর ঠিক আছে, স্কেল সংযোগ পরিচালিত সংস্থার একটি উদাহরণ। নিয়ন্ত্রণহীন সংস্থানগুলির উদাহরণ হ'ল মার্শাল পদ্ধতিটি ব্যবহার করে যখন পরিচালনাহীন মেমরি থেকে মেমরি বরাদ্দ করা দরকার llআলোচএইচ্লোবাল () এই ক্ষেত্রে এটি সেরা ব্যবস্থা নয় এমন একটি ডেস্ট্রাক্টর (tor সিটি) ব্যবহার করে মার্শালকে কল করুন ree ফ্রিএইচ গ্লোবাল () এই স্মৃতি মুক্তি।
ইগোর থোমাজ

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

32

পরিচালিত সংস্থানগুলি সেগুলি যা খাঁটি। নেট নেটওয়ার্ক এবং রানটাইম দ্বারা পরিচালিত হয় এবং এর প্রত্যক্ষ নিয়ন্ত্রণে থাকে।

নিয়ন্ত্রণহীন সংস্থানগুলি সেগুলি নয়। ফাইল হ্যান্ডলগুলি, পিনযুক্ত মেমরি, COM অবজেক্টস, ডাটাবেস সংযোগ ইত্যাদি


13

প্রশ্নোত্তরতে অপরিকল্পিত সংস্থানগুলি কী কী? 1 , ব্রুস উড নিম্নলিখিত পোস্ট করেছেন:

আমি "পরিচালিত" এবং "পরিচালনাবিহীন" পদগুলি এইভাবে মনে করি:

"ম্যানেজড" বলতে। নেট স্যান্ডবক্সের মধ্যে যে কোনও কিছু বোঝায়। এর মধ্যে সমস্ত .NET ফ্রেমওয়ার্ক ক্লাস রয়েছে।

"পরিচালনাহীন" বলতে .NET স্যান্ডবক্সের বাইরের প্রান্তিকে বোঝায়। এতে উইন 32 এপিআই ফাংশনগুলিতে কলগুলির মাধ্যমে আপনাকে ফেরত দেওয়া এমন কিছু অন্তর্ভুক্ত রয়েছে।

আপনি যদি কখনও উইন 32 এপিআই ফাংশনকে কল করেন না এবং কোনও উইন 32 "হ্যান্ডেল" অবজেক্ট ফিরে না পান, তবে আপনি কোনও ব্যবস্থাবিহীন সংস্থান রাখছেন না। .NET ফ্রেমওয়ার্ক শ্রেণীর পদ্ধতিগুলির মাধ্যমে আপনি যে ফাইল এবং স্ট্রিমগুলি খোলেন সেগুলি হ'ল সমস্ত পরিচালিত মোড়ক।

মন্তব্য: আপনি সরাসরি পরিচালনা না করা সংস্থানটি ধরে রাখছেন না । তবে আপনি সিস্টেমে.আইও.ফাইস্ট্রিমের মতো পরিচালিত "র‌্যাপার ক্লাস" এর মাধ্যমে অপ্রত্যক্ষভাবে একটি অপরিকল্পিত রিসোর্স ধরে রেখেছেন । এই ধরনের একটি মোড়কের শ্রেণি সাধারণত আইডিস্পোজেবল প্রয়োগ করে (হয় প্রত্যক্ষ বা উত্তরাধিকারের মাধ্যমে)।

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

  1. আপনাকে নেট। নেটের পিছনে (অপরিশোধিত সংস্থানসমূহ) এর পিছনে অপারেটিং সিস্টেম থেকে সরাসরি যে কোনও সংস্থান দখল করা থেকে মুক্তি পেতে অনুমতি দেয়।

  2. আপনি এবং আপনার কলকারীদের মোটা .NET অবজেক্ট /। নেট অবজেক্ট যা আপনার / আপনার কলাররা এখন মুক্তি পেতে চাইছে তাদের গ্রুবিত সামান্য হাতে মূল্যবান সংস্থান রাখার অনুমতি দেয় ।

মন্তব্য: বাস্তবায়ন করার মাধ্যমে IDisposableএবং যার ফলে একটি প্রদানের Dispose()পদ্ধতি, আপনি আপনার ক্লাসের একটি ব্যবহারকারী বিজ্ঞপ্তিতে একটি সক্রিয় হয় নির্ণায়ক ফ্যাশন কোনো অপরিচালিত সম্পদের একটি দৃষ্টান্ত আপনার বর্গ দ্বারা অনুষ্ঠিত হয়।


1 লিঙ্কটি মূলত শচীন শনভাগের উত্তরে ভাগ করা হয়েছে । 2005-11-17 তারিখে উদ্ধৃত উপাদান। নোট করুন যে আমি উদ্ধৃত সামগ্রীটি হালকাভাবে অনুলিপি করেছি।


5

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

আরও বিশদের জন্য - http://bytes.com/topic/c-sharp/answers/276059- কি- পরিচালিত- উত্স


1
"আইডিস্পোজেবল ইন্টারফেসের পিছনে ধারণাটি হ'ল আপনাকে একটি নির্বিচার ফ্যাশনে রিসোর্সগুলি পরিষ্কার করতে দেওয়া এবং অব্যবহৃত পরিচালিত সংস্থানগুলি পরিষ্কার করা to" দুর্দান্ত!
zionpi

0

পরিচালিত সংস্থানগুলি হ'ল সংস্থান যা আবর্জনা সংগ্রহকারী দ্বারা মুক্ত করা যায় এবং অপব্যবহারযোগ্য সংস্থানগুলি আবর্জনা সংগ্রাহক দ্বারা এই উদ্দেশ্যে মুক্ত করা যায় না এজন্য ধ্বংসকারী প্রয়োজন।

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