תוכן עניינים:
הגדרה - מה המשמעות של אספן הזבל?
אספן אשפה הוא חתיכת תוכנה המבצעת ניהול זיכרון אוטומטי. תפקידו לשחרר כל זיכרון שלא נעשה בו שימוש ולהבטיח ששום זיכרון לא ישוחרר בזמן שהוא עדיין בשימוש. כמה שפות כמו Java ושפות NET כוללות איסוף זבל אוטומטי, ואילו בשפות כגון C / C ++ נדרשים המתכנת לנהל זיכרון ידני.
Techopedia מסביר את אספן הזבל
אוסף האשפה הוצג לראשונה על ידי יוצר ליסק ג'ון מקארתי כדי להקל על ניהול הזיכרון הידני בעת העבודה עם שפת הליספ.
שלוש הטכניקות העיקריות שמשמש אספן זבל לניהול זיכרון אוטומטי הן כדלקמן:
- ספירת הפניה - הפניה לכל אובייקט נספרת באמצעות משתנה נגדי. כאשר הדלפק מגיע לאפס הוא מציין שהאובייקט כבר לא נחוץ ולכן הוא ממוחזר.
- סמן וסחף - מעבר רקורסיבי של כל האובייקטים הניתנים להשגה מתבצע בכל אזורי הנתונים, ועצמים הניתנים להשגה מסומנים. לאחר מכן ממוחזרים האובייקטים הלא מסומנים.
- עצירה והעתקה - ערימת הזיכרון מחולקת לשני חלקים: קטע המכיל את האובייקטים וקטע ריק אליו מועברים (מועתקים) האובייקטים אם נמצא שהם מסומנים. האובייקטים הלא מסומנים בחלק הראשון ממוחזרים על ידי ריקוןם.
כאשר שוחרר גוש זיכרון שהוקצה למצביע / אובייקט, יש לאפס את המצביע / אובייקט לערך null; אחרת, זה משתלשל, כלומר מצביע על חסימת זיכרון לא חוקית.
איסוף האשפה מסייע בהפחתת באגים וסיכוני אבטחה הנגרמים בגלל מצביעים משתלשלים ובעיות דליפת זיכרון.
החסרונות של שימוש באספן אשפה כוללים את התקורה הנוספת על משאבים וביצועים. הפעלת אספן אשפה עשויה גם להאט את המערכת ובכך להקטין את ביצועיה.
