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

תוכן שנמחק תוכן שנוסף
Naorz (שיחה | תרומות)
אין תקציר עריכה
דלפי, פרל, פייתון, פהפ, ג'אווהסקריפט, C# <= #C
שורה 2:
'''איסוף זבל''' (באנגלית: '''Garbage collection''') הוא תהליך שבו סביבת הריצה של [[תוכנית מחשב]] מנקה מה[[זיכרון מחשב|זיכרון]] את ה[[אובייקט (הנדסת תוכנה)|אובייקטים]] שאין בהם עוד צורך.
 
המנגון הומצא ויושם לראשונה בשנת 1959 ע"י ג'ון מקארתי עבור שפת [[Lisp]]{{הערה| ג'ון מקארתי, [http://www-formal.stanford.edu/jmc/history/lisp.ps History Of Lisp], אוניברסיטת [[סטנפורד]], 1979}}. איסוף זבל נפוץ בשפות תיכנות [[תכנות מונחה-עצמים|מוכוונות עצמים]] מודרניות כגון [[Java]] ו [[C Sharp|C#C{{כ}}]], וכן בשפות המורצות על ידי [[פרשן]] כמו [[Perl]], {{כ}}[[Python]], {{כ}}[[PHP]] ו-[[JavaScript]]. שפותיש אחרותשפות כגון [[Ada]] ו[[D (שפת תכנות)|שפת D]] מאפשרות(ובמידה מסוימת גם [[דלפי (שפת תכנות)|Delphi]]) המאפשרות למתכנת לבחור האםאם להשתמש במנגנון זה או לנהל הקצאות ושחרור זיכרון באופן עצמאי.
 
בהקשר הנוכחי, "זבל" הוא אובייקט שהזיכרון אותו הוא תופס [[הקצאת זיכרון דינמית|הוקצה באופן דינמי]], ואין אליו אף הצבעה (באופן ישיר או עקיף) על יד אף משתנה הנמצא בשימוש, ולכן לא ניתן להגיע אליו. מצב בו חלק מאותם אובייקטים שאין בהם צורך לא נמחקים מכונה "[[דליפת זיכרון]]" (Memory leak) ועלול להביא למצב בו משאבי הזיכרון שהתוכנית משתמשת בהם הולכים וגדלים ואף לקריסה (הפסקת ריצה) של התוכנית.