کنکور کامپیوتر
0
ورود | ثبت نام
نظرات
اشتراک
بالا
علاقه‌مندی

اشتراک
 

Garbage Collection(GC) چیست و چگونه کار میکند؟

این مقاله عالی بررسی کرده که Garbage Collection(GC) چیست و چگونه کار میکند؟ و مزایای Garbage Collection و انواع روش های Garbage Collection را معرفی کرده

Garbage Collection چیست؟

Garbage Collection

جمع آوری زباله (Garbage Collection یا به‌طور مختصر GC) یک ویژگی بازیابی حافظه است که در زبان‌های برنامه‌نویسی مانند #C و جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است تعبیه شده است. GC به‌طور خودکار فضایی که دیگر مورد نیاز برنامه نیست را حذف می‌کند. جمع آوری زباله تضمین می‌کند که یک برنامه از میزان حافظه خود بیشتر استفاده نمی‌کند یا به نقطه‌ای نمی‌رسد که دیگر نتواند کار کند. در زبان های برنامه نویسی قدیمی مانند Cزبان برنامه نویسی C – مزایا و کاربرد زبان C – فرق C و ++Cزبان برنامه نویسی C – مزایا و کاربرد زبان C – فرق C و ++Cاین مقاله عالی ابتدا توضیح می‌دهد که زبان برنامه نویسی c چیست، سپس به بررسی مزایا و معایب زبان C ، کاربردهای زبان سی ، و تفاوت بین C و ++C می‌پردازد و سی پلاس پلاسبرنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++‎؟برنامه نویسی سی پلاس پلاس چیست؟ مزایای برنامه نویسی C++‎؟برنامه نویسی سی پلاس پلاس چیست و چه کاربردی دارد؟ این صفحه عالی به بررسی مزایای برنامه نویسی C++ پرداخته و نمونه هایی از کدهای زبان برنامه نویسی ++C را آورده، توسعه‌دهنده باید خودش و به‌صورت دستی عمل بازیابی حافظه را انجام می‌داد که این کار باعث به‌وجود آمدن باگ های مرتبط با حافظه می‌شد. مثلا یک توسعه‌دهنده ممکن است فراموش کند که برنامه دیگر نیازی به حافظه ندارد و حافظه را آزاد کند و این باعث می‌شود برنامه به سرعت از کل RAM استفاده کند. زبان های برنامه نویسی که شامل GC هستند، سعی می‌کنند با دقت کامل و به‌طور خودکار حافظه را آزاد کنند و از بروز چنین مشکلاتی جلوگیری کنند.

Garbage Collection چگونه کار می‌کند؟

هر زبان برنامه نویسی Garbage Collection را به‌طور متفاوتی پیاده سازی می‌کند، اما از لحاظ خودکار بودن این عمل، همگی شبیه به یکدیگر هستند. در بعضی موارد، قابلیت های GC را می‌توان از طریق کتابخانه یا ماژول به یک زبان اضافه کرد. GC یک جزء نسبتا رایج در اکثر زبان های برنامه نویسی مدرن است و این تنها رویکرد مدیریت حافظه است که بیشتر توسعه‌دهنده‌ها آن را می‌شناسند و به‌طور کلی GC یک قابلیت مهم برای توسعه‌دهندگان به‌شمار می‌رود. GC یک فرآیند مداوم است که به پردازنده (CPU)پردازنده (CPU) چیست؟ بررسی انواع، وظایف و کاربردهاپردازنده (CPU) چیست؟ بررسی انواع، وظایف و کاربردهاسی پی یو قلب کامپیوتر و کامپیوتر قلب دنیای کنونی است، بنابراین در این صفحه به معرفی و بررسی سی‌پی‌یو یا همان پردازنده مرکزی (CPU) پرداخته‌ شده، و بطور کامل توضیح داده‌ایم که CPU از چه بخش هایی تشکیل شده و هر بخش چه وظایف و مشخصاتی دارد. نیاز دارد و می‌تواند عملکرد کلی برنامه را تحت‌تأثیر قرار دهد یا حتی عملکرد آن را مختل کند. به همین دلیل، برخی از توسعه‌دهندگان هنوز در مورد مزایای GC بحث می‌کنند و معتقدند که آنها می‌توانند حافظه را بهتر از یک فرآیند خودکار مدیریت کنند.

نسل ها در Garbage Collection

یکی از روش‌های رایج تقسیم فضای حافظه پشته، بر اساس طول عمر یک شی است، که به سه نسل تقسیم می‌شود :

نسل اول GC

تمام اشیاء تازه ایجاد شده در نسل اول شروع می‌شوند. اشیاء کوتاه‌مدت، مانند متغیرهای موقت، هرگز از این نسل خارج نمی‌شوند. Garbage Collection آنها را شناسایی کرده و حذف می‌کند و فضای حافظه اختصاص داده شده آنها را آزاد می‌کند.

نسل دوم GC

اشیایی که در نسل اول از فرآیند GC جان سالم به در می‌برند به نسل دوم منتقل می‌شوند، هنگامی که فرآیند GC در این سطح اجرا می‌شود، Garbage Collector (جمع آورنده زباله) مجدداً اشیاء موجود در این نسل را که دیگر مورد نیاز نیستند، شناسایی و حذف می‌کند.

نسل سوم  GC

جمع آوری زباله در این سطح معمولا کمتر از اشیاء نسل اول انجام می‌شود. نسل سوم شامل اشیاء با عمر طولانی و دائمی است که از فرآیند GC نسل دوم جان سالم به در می‌برند. اشیاء تا زمانی که دیگر مورد نیاز نباشند در این سطح باقی می‌مانند، مانند سایر جنبه‌های Garbage Collection، زبان های برنامه نویسی رویکردهای متفاوتی برای مدیریت هر نسل از اشیاء دارند. مثلا نسل‌ها در CLR شامل نسل‌های صفر و یک و دو هستند، به این صورت که ابتدا GC اشیا نسل صفر را بررسی می‌کند و اگر فرایند GC برای نسل صفر حافظه کافی را بازسازی نکرد این فرآیند برای اشیا در نسل یک اجرا می‌شود و به همین ترتیب نسل دو نیز بررسی می‌شود.

در جاواجاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا چیست؟ تعریف، معنی و ویژگی های جاوا (java) از 0تا100جاوا یک زبان برنامه نویسی همه منظوره، مبتنی بر کلاس و شی گرا است که برای داشتن وابستگی های پیاده سازی کمتر طراحی شده است، زبان برنامه نویسی جاوا شبیه ++C است رویکرد کمی متفاوت است اما همچنان حافطه را به سه فضای مجزا تقسیم می‌کند:

این سه سطح به ترتیب با نسل 0، 1 و 2 CLR مطابقت دارند، اگرچه Garbage Collection می‌تواند در هر سطحی اتفاق بیفتد، اما در نسل‌های قدیمی کمتر اتفاق می‌افتد.

مزایا Garbage Collection

همانطور که گفتیم GC برنامه‌نویس را از مدیریت دستی حافظه راحت می‌کند. و این عمل باعث جلوگیری از بروز بعضی از خطاها می‌شود. مثلا :

معایب Garbage Collection

با وجود مزایای آن، Garbage Collection می‌تواند تأثیر منفی بر عملکرد داشته باشد. از معایب آن می‌توان به موارد زیر اشاره کرد:

در فرآیند Garbage Collection از منابع محاسباتی برای این که کدام حافظه‌ها باید حذف شوند استفاده می‌شود. در صورت مدیریت نکردن طول عمر اشیا به‌صورت دستی در یک برنامه، ممکن است سربار محاسباتی برای انجام فعالیت‌های GC منجر به کاهش عملکرد شود. در یک مقاله بررسی شده که GC نیاز به یک حافظه‌ای پنج برابر حافظه اصلی دارد تا به این سربار غلبه کند و عملکرد بهتری نسبت به حالت معمولی داشته باشد.  مثلا شرکت اپل با وجود تمام ویژگی‌های مثبت GC، آن را برای سیستم عامل IOS به علت تاثیر بر عملکرد سیستم نپذیرفت.

انواع روش های Garbage Collection

برای استفاده از Garbage Collection، روش‌های متعددی وجود دارد. مانند: Tracing، Reference Counting، Cycles، Space Overhead، Speed Overhead، Requires Atomicity، Not Real-time ، Escape Analysis و در نهایت Mark And Sweep که برخی از این روش‌ها برای بهترشدن معایب روش‌های قبلی خود به‌وجود آمده‌اند. ما در اینجا دو روش را به‌طور مختصر برای فهم بهتر Garbage Collection شرح می‌دهیم.

Reference Counting (شمارشگر مراجع)

روش Reference Counting، از نظر تکنیکی ساده ترین روش پیاده سازی GC است. این روش براساس شمارش تعداد اشاره‌گرهای مرجع هر شی کار می‌کند. علاوه بر مدیریت حافظه از این روش به‌طور گسترده در سیستم عامل‌ها به‌عنوان ابزار مدیریت منابع برای مدیریت منابع سیستم مانند فایل‌ها و سوکت‌ها و .... استفاده می‌شود.

هر شی اختصاص داده شده در تکنیک شمارش مراجع دارای یک فیلد شمارش است. مدیر حافظه وظیفه دارد مطمئن شود که تعداد ارجاعات هر شی با تعداد ارجاعات اشاره‌گر مستقیم به آن شی در همه زمان‌ها برابر است.

Mark And Sweep

این الگوریتم از دو فاز Mark (علامت گذاری) و Sweep (پاک کردن) تشکیل می‌شود. ابتدا تمام اشیایی که اشاره‌گر مرجع دارند Mark می‌شوند و در مرحله بعدی اشیایی که علامتگذاری نشده‌اند Sweep می‌شوند. برای درک بهتر این الگوریتم تصویر زیر را مشاهده کنید.

MarkandSweep

جمع‌بندی

دراین مطلب سعی براین داشتیم تا مفهوم جمع آوری زباله (GC) را شرح دهیم و دریافتیم که Garbage Collector یک ویژگی بازیابی حافظه است. یک زبان برنامه نویسی مجهز به GC شامل یک یا چند جمع کننده زباله (موتورهای GC) است که به طور خودکار فضای حافظه را، آزاد می کند. همچنین مزایا و معایب جمع آوری زباله (GC) را بررسی و نسل‌های آن را معرفی کردیم و انواع روش‌های Garbage Collection را شرح دادیم.

Garbage Collection یا بازیافت زباله چیست؟

در علم کامپیوتر نوعی از مدیریت خودکار حافظه، که به‌طور خودکار توسط Garbage Collector، حافظه غیرقابل دسترس را پاک سازی می‌کند؛ Garbage Collection یا به‌اختصار GC گفته می‌شود.

Garbage Collection چگونه کار می‌کند؟

هر زبان برنامه نویسی Garbage Collection را به‌طور متفاوتی پیاده‌سازی می کند، اما از این لحاظ که همه آنها این عمل را بطور خودکار انجام می‌دهند شبیه به یکدیگر هستند. الگوریتم‌های متفاوتی برای کارکردن GC وجود دارد از معروف‌ترین الگوریتم‌ها می‌توان Mark and Sweep را نام برد.

امتیازدهی5 1 1 1 1 1 1 1 1 1 15.00 امتیاز (1 امتیاز)
اشتراک
بارگذاری نظرات
تلگرام اینستاگرام