Web - Amazon

We provide Linux to the World


We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
איסוף זבל (תכנות) - ויקיפדיה

איסוף זבל (תכנות)

מתוך ויקיפדיה, האנציקלופדיה החופשית

איסוף זבל (באנגלית: Garbage collection) הוא תהליך שבו סביבת הריצה של תוכנית מחשב מנקה מהזיכרון את האובייקטים שאין בהם עוד צורך.

בתכנות, "זבל" הוא אובייקט המוקצה באופן דינמי, שאין אליו אף הצבעה (באופן ישיר או עקיף) על יד אף משתנה הנמצא בשימוש, ולכן לא ניתן להגיע אליו. מצב בו חלק מאותם אובייקטים שאין בהם צורך לא נמחקים מכונה "דליפת זיכרון" (Memory leak) ועלול להביא למצב בו משאבי הזיכרון שהתוכנית משתמשת בהם הולכים וגדלים ואף לקריסה (הפסקת ריצה) של התוכנית.

תוכן עניינים

[עריכה] יישום איסוף אוטומטי בשפות תכנות

במספר שפות תכנות כגון Java,‏ Basic,‏ C#‎ ו-Lisp מתנהל איסוף הזבל באופן אוטומטי, ללא צורך בפעולה מיוחדת מצד המתכנת.

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

בשפת ++C, בדומה לשפת C, לא קיים איסוף זבל אוטומטי, אבל ניתן לישם איסוף זבל אוטומטי באמצעות טכניקה הקרויה "מצביעים חכמים" שהם למעשה אובייקטים שמתנהגים כמו מצביעים רגילים אבל מנהלים את איסוף הזבל של האובייקטים שהם מצביעים עליהם באופן אוטומטי.

[עריכה] טכניקות איסוף זבל אוטומטי

קיימות שתי טכניקות עיקריות של איסוף זבל אוטומטי.

[עריכה] סימון ומחיקה

טכניקה אחת, הקרויה "סימון ומחיקה" (Mark and sweep), היא הטכניקה הנפוצה ביותר בשימוש בשפות תיכנות המציעות איסוף זבל אוטומטי כגון Java. בשיטה זו, אחת לכמה זמן מתעורר תהליך שעובר על האובייקטים שנמצאים בשימוש כרגע (בשפות תכנות בדרך כלל מדובר באובייקטים סטטיים וגלובליים ואובייקטים במחסנית). התהליך רץ על כל ההצבעות מהם אל אובייקטים אחרים בזיכרון (כלומר בHeap) ובין האובייקטים האלו לאובייקטים אחרים ומסמן את כל האובייקטים שעבר דרכם כאובייקטים בשימוש. לבסוף, כל האובייקטים שאינם מסומנים נמחקים.

היתרונות העיקריים של שיטה זו:

  1. עובד על כל סוג של מבנה נתונים
  2. אינו דורש הרבה זיכרון נוסף לצורך הפעלה
  3. אין תקורה של זמן על יצירה ומחיקת אובייקטים

החסרונות העיקריים של סימון ומחיקה:

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

[עריכה] מניית התייחסויות

טכניקה נוספת קרויה "מניית התייחסויות" (Reference counting), מבוססת על כך שלכל אובייקט יש מונה הסופר את מספר המצביעים שמתייחסים אליו. ברגע שמספר ההתייחסויות יורד ל-0, האובייקט מוחק את עצמו באופן אוטומטי.

היתרונות של שיטה זו:

  1. תהליך ניהול הזיכרון מתרחש באופן מיידי ואובייקטים שאין בהם צורך נמחקים ברגע שההתייחסות אליהם מוסרת
  2. אין צורך בהרצת תהליך המעכב את ריצת התוכנית
  3. יעיל יותר כאשר ישנו מספר רב של אובייקטים בזיכרון
  4. מאוד קל למימוש בשפת ++C באמצעות מצביעים חכמים.

החסרונות של שיטה זו:

  1. לא עובד נכון כאשר ישנה הצבעה מעגלית, כלומר אובייקט A מצביע על B ואובייקט B מצביע על A. ישנה דרך לתקן בעיה זו, אולם יש לכך עלות נוספת בביצועים
  2. פחות יעיל מבחינת זיכרון בשל הצורך להחזיק מונה התייחסויות עבור כל אובייקט.
  3. יש צורך לשנות את ערכו של המונה בכל פעם שמוסיפים או מוחקים מצביע המתייחס לאותו האובייקט.
Our "Network":

Project Gutenberg
https://gutenberg.classicistranieri.com

Encyclopaedia Britannica 1911
https://encyclopaediabritannica.classicistranieri.com

Librivox Audiobooks
https://librivox.classicistranieri.com

Linux Distributions
https://old.classicistranieri.com

Magnatune (MP3 Music)
https://magnatune.classicistranieri.com

Static Wikipedia (June 2008)
https://wikipedia.classicistranieri.com

Static Wikipedia (March 2008)
https://wikipedia2007.classicistranieri.com/mar2008/

Static Wikipedia (2007)
https://wikipedia2007.classicistranieri.com

Static Wikipedia (2006)
https://wikipedia2006.classicistranieri.com

Liber Liber
https://liberliber.classicistranieri.com

ZIM Files for Kiwix
https://zim.classicistranieri.com


Other Websites:

Bach - Goldberg Variations
https://www.goldbergvariations.org

Lazarillo de Tormes
https://www.lazarillodetormes.org

Madame Bovary
https://www.madamebovary.org

Il Fu Mattia Pascal
https://www.mattiapascal.it

The Voice in the Desert
https://www.thevoiceinthedesert.org

Confessione d'un amore fascista
https://www.amorefascista.it

Malinverno
https://www.malinverno.org

Debito formativo
https://www.debitoformativo.it

Adina Spire
https://www.adinaspire.com