آشنایی با مفهوم Garbage Collection در زبان برنامه‌نویسی پایتون


در زبان برنامه‌نویسی پایتون هنگامی که آبجکتی از روی کلاس خاصی ساخته می‌شود یا متغیر جدیدی در برنامه تعریف می‌شود، مفسر پایتون بخشی از حافظۀ دستگاه را به ذخیره‌سازی آبجکت مد نظر و یا آن متغیر جدید اختصاص می‌دهد و لازم به یادآوری است که حافظۀ یک کامپیوتر علیرغم گنجایش بالای اطلاعات، باز هم نامحدود نیست و از همین روی تعداد آبجکت‌ها و متغیرهایی که می‌توان در یک برنامه نمونه‌سازی کرد باید مدیریت شود چرا که اِشغال فضای سیستم توسط آبجکت‌ها و متغیرهای فراوان، به خصوص در اپلیکیشن‌های بزرگ و اینترپرایز، می‌تواند باعث بروز مشکل گردد که در همین راستا طراحان زبان پایتون برای حل چنین مشکلاتی از مفهوم Garbage Collection استفاده کرده‌اند که در بسیاری از زبان‌های برنامه‌نویسی مانند جاوا نیز به کار گرفته می‌شود.

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

به طور معمول، یک دولوپر تازه‌کار متوجه نمی‌شود که گاربیج کالکتور پایتون چه زمانی یک آبجکت را از حافظۀ سیستم پاک می‌کند اما متد از پیش تعریف‌شده‌ای به نام __()del__ برای این منظور وجود دارد که به محض حذف یک آبجکت و پاک کردن آن از حافظۀ سیستم فراخوانی می‌شود که تحت عنوان Destructor نیز شناخته می‌شود. در واقع، متد __()del__ مسئول پاک کردن آبجکت‌هایی است که در برنامۀ مربوطه مورد استفاده قرار نمی‌گیرند و درست قبل از پاک کردن آبجکتی فراخوانی می‌شود که بدون استفاده مانده و بخشی از حافظۀ دستگاه را بی‌دلیل به خود اختصاص داده است.

لیست نظرات
کاربر میهمان
دیدگاه شما چیست؟
کاربر میهمان