تفاوت کلیدی – جمع آوری زباله در مقابل ویرانگر
اکثر زبان های برنامه نویسی از برنامه نویسی شی گرا پشتیبانی می کنند. این یک روش برای ساختن یک برنامه یا یک نرم افزار با استفاده از اشیاء است. یک شی با استفاده از یک کلاس ایجاد می شود، بنابراین نمونه ای از یک کلاس است. یک کلاس شرحی از آنچه شی باید از آن تشکیل شده باشد را ارائه می دهد. هنگام ایجاد اشیاء، حافظه برای اشیاء اختصاص داده می شود. حافظه تخصیص یافته باید در پایان اجرای برنامه آزاد شود تا از آن حافظه برای برخی شیء دیگر استفاده مجدد شود. زبانهای برنامهنویسی مانند جاوا و C. NET از جمعآورندههای زباله برای مدیریت حافظه استفاده میکنند، در حالی که زبانهایی مانند C و C++ به برنامهنویس نیاز دارند تا مدیریت حافظه را مدیریت کند.مقدار لازم حافظه اختصاص داده شود و در پایان اجرا، حافظه آزاد شود. زباله جمع کن و تخریب کننده برای آزادسازی حافظه استفاده می شود. تفاوت اصلی بین زباله جمعآور و تخریبگر در این است که زباله جمعآور نرمافزاری است که مدیریت حافظه خودکار را انجام میدهد، در حالی که تخریبکننده روش خاصی است که توسط جمعآورنده زباله در هنگام تخریب شیء نامیده میشود.
زباله جمع کن چیست؟
برخی از زبان های برنامه نویسی دارای محیط های کد مدیریت شده اند. در زبان های برنامه نویسی جاوا و سی شارپ مدیریت خودکار حافظه انجام می شود. برنامه نویس نیازی به آزادسازی حافظه مورد استفاده توسط اشیا ندارد. توسعه حتی سیستم های پیچیده برای آنها آسان تر است زیرا مدیریت حافظه به طور خودکار انجام می شود. در زبان های برنامه نویسی مانند C، C++ و Objective C، برنامه باید حافظه اشیاء را به سیستم بازگرداند. زبان هایی مانند جاوا و سی شارپ می توانند اشیایی را که دیگر مورد استفاده قرار نمی گیرند، کشف کنند.پس از آن، حافظه اختصاص داده شده برای آن اشیاء را به سیستم باز میگردانند.
در زبان های برنامه نویسی C و Java، اگر کلاسی به نام Student وجود داشته باشد، می توان با استفاده از Student s=new Student (); "جدید" برای ایجاد یک نمونه از کلاس Student استفاده می شود. حافظه را در سیستم تخصیص می دهد. "s" به بلوک حافظه اختصاص داده شده برای آن شی اشاره دارد. محیط های زبان مشخص می کنند که آیا اشیا مورد استفاده قرار می گیرند یا خیر. اگر بیشتر از آنها استفاده نشود، حافظه آزاد می شود و می توان بعداً از آنها استفاده کرد.
شکل 01: زباله جمع کن و ویرانگر
هنگام اجرای یک برنامه، بلوک های حافظه از مخزن حافظه سیستم تخصیص می یابد. سپس برنامه با استفاده از آن حافظه وظایف را انجام می دهد.هنگامی که اجرای برنامه به پایان می رسد، جمع کننده زباله متوجه می شود که آیا بلوک های حافظه اختصاص داده شده برای برنامه ضروری است یا خیر. اگر آنها مورد نیاز نباشند، آن بلوک های حافظه به سیستم بازگردانده می شوند. بنابراین، جمع کننده زباله می تواند اشیاء ایجاد شده در برنامه را ردیابی کند. بلوک های حافظه ای که دیگر مورد نیاز نیستند به استخر حافظه سیستم بازگردانده می شوند. مزیت اصلی این فرآیند تأیید این است که برنامه نویس مجبور نیست بر روی تخصیص حافظه تمرکز کند. عملکرد و استفاده از حافظه را متعادل می کند.
ویرانگر چیست؟
نابودگر یک تابع عضو ویژه یک کلاس است. هر زمان که شی از محدوده خارج شود، فراخوانی می شود. هنگامی که یک تابع به پایان می رسد یا در پایان اجرای برنامه، شی را می توان از بین برد. نام ویرانگر همان نام کلاس است. سازنده برای ایجاد شی استفاده می شود. می تواند پارامترها را بپذیرد. سازنده همچنین می تواند مقادیر بازگشتی داشته باشد. اما در یک Destructor نوع بازگشت یا پارامترهای پذیرنده وجود ندارد.یک کلاس فقط می تواند از یک تخریب کننده تشکیل شود. یک تخریبگر با استفاده از علامت tilde ارجاع داده می شود. اگر نام کلاس Student است، تخریب کننده ~Student () {} است.
زباله جمع کن به دنبال اشیایی می گردد که دیگر مورد نیاز نیستند. این تضمین می کند که اشیایی که دیگر توسط برنامه استفاده نمی شوند باید از بین بروند. ویرانگر را فرا میخواند تا حافظه را آزاد کند و منابع را توزیع کند. Destructor ها برای آزادسازی حافظه، بستن فایل ها، انتشار منابع شبکه و بستن اتصالات پایگاه داده مفید هستند. در اکثر زبان های برنامه نویسی نیازی به نوشتن Destructor نیست زیرا زباله جمع کننده به تنهایی سازنده پیش فرض را فراخوانی می کند. اگر برنامهنویس هر گونه تخصیص حافظه پویا را با استفاده از اشارهگرها در زبانی مانند C++ انجام داده باشد، باید یک تخریبگر بنویسد تا حافظه را قبل از از بین رفتن شیء آزاد کند.
شباهت بین زباله جمع کن و تخریب کننده چیست؟
هم Garbage Collector و هم Destructor برای آزاد کردن حافظه ای که دیگر برای برنامه مورد نیاز نیست استفاده می شود
تفاوت بین زباله جمع کن و ویرانگر چیست؟
Zarbage Collector vs Destructor |
|
زباله جمع کن نرم افزاری است که مدیریت خودکار حافظه را انجام می دهد. | نابودگر روش خاصی است که توسط زباله جمع کن در هنگام تخریب شیء نامیده می شود. |
نوع | |
زباله جمع کن یک نرم افزار است. | نابودگر یک روش است. |
خلاصه - جمع آوری زباله در مقابل ویرانگر
Garbage collector و destructor دو اصطلاح مرتبط با آزادسازی حافظه هستند. در این مقاله تفاوت بین زباله جمع کن و تخریب کننده بحث شده است. تفاوت بین زباله جمع کن و تخریب کننده در این است که زباله جمع کن نرم افزاری است که مدیریت حافظه خودکار را انجام می دهد در حالی که تخریب کننده روش خاصی است که توسط زباله جمع کن در هنگام تخریب جسم نامیده می شود.
دانلود PDF بازی Garbage Collector vs Destructor
می توانید نسخه PDF این مقاله را دانلود کنید و طبق یادداشت استنادی از آن برای اهداف آفلاین استفاده کنید. لطفا نسخه PDF را از اینجا دانلود کنید: تفاوت بین زباله جمع کن و تخریب کننده