زباله روبی در سی شارپ
یکی از مهمترین ویژگی های کدهای مدیریت شده(managed code)، مفهوم زباله روبی(garbage collection) است. زباله روبی، یک روش در دات نت است، که اطمینان حاصل می کند که حافظه ی به کار رفته توسط یک اپلیکیشن، وقتی که این اپلیکیشن دیگر مورد استفاده قرار نمی گیرد، کاملا آزاد شود. قبل از دات نت، مسئولیت این کار با برنامه نویسان بود و اگر کوچکترین خطایی در کدها به وجود می آمد، باعث می شد که مقادیر زیادی از حافظه(memory ) به طرز مرموزی به دلیل اختصاص یافتن در مکان اشتباه، ناپدید شوند. که معمولا به معنی کاهش سرعت رایانه به صورت تصاعدی و متوقف شدن سیستم(system crash) بود.
زباله روبی در دات نت، به این صورت کار می کند که به صورت دوره ای و در فواصل معین حافظه ی(memory) کامپیوتر ما بررسی می شود و هر چیزی که دیگر به آن نیازی نیست (از حافظه) حذف می شود. برای این کار هیچ چارچوب زمانی(set time frame) وجود ندارد؛ این کار ممکن است هزاران بار در یک ثانیه انجام شود؛ یا هر چند ثانیه انجام شود یا هر زمان دیگر؛ اما ما می توانیم مطمئن باشیم که این کار انجام می شود. در اینجا چند مفهوم برای برنامه نویسان وجود دارد که باید بررسی شود. به دلیل اینکه این کار برای ما در یک زمان غیر قابل پیش بینی انجام می شود، اپلیکیشن ها باید با داشتن این نکته در ذهن، ساخته شوند: کدهایی که به حافظه ی فراوانی برای اجرا نیاز دارند، به جای اینکه منتظر بمانند تا زباله روبی برای آنان اتفاق بیفتد، باید خود را مرتب کنند. اما این موضوع این قدرها که به نظر می رسد هم مشکل نیست.
گردآوری مفاهیم
قبل از اینکه جلو برویم، اجازه دهید به طور خلاصه گام های مورد نیاز برای ایجاد یک اپلیکیشن دات نت را همان طور که قبلا هم گفته شد، مرور کنیم:
- کدهای اپلیکیشن با استفاده از یک زبان سازگار با دات نت مثل #C نوشته می شوند(تصویر 1.1 را مشاهده کنید).
- سپس این کدها به کدهای CIL کامپایل می شوند که در یک اسمبلی ذخیره می شوند(تصویر 1.2 را مشاهده کنید).
(تصویر 1.1)
(تصویر 1.2)

3. وقتی که این کدها اجرا شدند اول باید با استفاده از کامپایلر JIT به کدهای محلی(native) تبدیل شوند.
(تصویر 1.3)

4. کدهای محلی در چارچوب CLR/CoreCLR مدیریت شده، همرا با دیگر اپلیکیشن های در حال اجرا یا در حال پردازش، اجرا می شوند. درست مثل تصویر 1.4.
(تصویر 1.4)

پیوند زدن یا linking در #C
به یک نکته ی اضافی که به این فرایند مربوط است توجه کنید. کدهای #C که در گام 2 به CIL کامپایل می شوند، نیازی نیست در داخل یک فایل واحد و منحصر به فرد باشند.این امکان وجود دارد که کدهای اپلیکیشن را به چندین فایل سورس کد منشعب کنیم، که پس از آن به یک اسمبلی تکی کامپایل می شوند. به این فرایند به شدت کاربردی، پیوند زدن(linking) گفته می شود. این کار ضروری است، زیرا کار با چند فایل کوچکتر نسبت به یک فایل بزرگ خیلی راحت تر است. ما می توانیم کدهایی که از لحاظ منطقی مرتبط هستند را در فایل های منحصر به فرد از یکدیگر جدا کنیم تا بتوانند به طور مستقل از یکدیگر کار کنند و وقتی عملا کامل شدند، آنها را (با کامپایل در یک اسمبلی) فراموش کنیم.
این کار باعث می شود که پیدا کردن تکه های خاصی از کدها وقتی که به آنها نیاز داریم ساده تر شود؛ و به تیم های برنامه نویس امکان می دهد تا بار مسئولیت برنامه نویسی را به بخش های قابل مدیریتی تقسیم کنند. که به وسیله ی آن افراد می توانند تکه هایی از کدها را بررسی کنند، بدون اینکه به بخش های سالم یا به بخش هایی که دیگران دارند روی آن کار می کنند، آسیبی وارد کنند.
آموزش سی شارپ, آموزش برنامه نویسی, کتاب آموزش سی شارپ
- بازدید: 610
1. سعی کنید نظرات شما مرتبط با مقاله ی مورد نظر باشد، در غیر این صورت پاسخ داده نخواهد شد.
2. سوالات خود را به صورت کوتاه بیان کنید و از پرسیدن چند سوال به طور همزمان خودداری کنید.
3. سوال خود را به طور واضح بیان کنید و از کلمات مبهم استفاده نکنید.