איסוף זבל (מדעי המחשב)

איסוף זבל (Garbage collection) הוא דבר בתוכנה שמוחק זיכרון שלא בשימוש.

הרעיון נולד ב-1959 ב-Lisp. שפות מודרניות כמו Java ו-Python משתמשות בו. בשפות כמו C אין אותו.

זיכרון שצריך להימחק נקרא "זבל". אם לא מוחקים אותו יש דליפת זיכרון. דליפה מייתרת זיכרון ויוצרת בעיות בתוכנית.

במערכות עם איסוף הזבל, המתכנת לא צריך לשחרר זיכרון ידנית.

האוסף סורק מה שהתקשר לתוכנית ומסמן אותו. כל מה שלא סומן נמחק.

לכל אובייקט יש ספירה של כמה מצביעים אליו. כשהספירה מגיעה ל-0, האובייקט נמחק.
בעיה: אם שני אובייקטים מצביעים זה על זה, הם לא יימחקו.

לפעמים יש צורך לנקות דברים מיוחדים קודם שזיכרון ישוחרר. זה נקרא Finalize. הוא מאט את השחרור.

מצביע חלש הוא מצביע שלא מונע שחרור האובייקט. זה חוסך זיכרון, אבל צריך לבדוק אם האובייקט עדיין קיים.

אוסף הזבל מחלק אובייקטים לדורות. רוב האובייקטים חיים מעט זמן, לכן בודקים קודם את החדשים.

תגובות גולשים

התגובה תפורסם באתר לאחר אישור המערכת

עדיין אין תגובות. היה הראשון להגיב!