הבדל בין אוסף אשפה למשמיד

תוכן עניינים:

הבדל בין אוסף אשפה למשמיד
הבדל בין אוסף אשפה למשמיד

וִידֵאוֹ: הבדל בין אוסף אשפה למשמיד

וִידֵאוֹ: הבדל בין אוסף אשפה למשמיד
וִידֵאוֹ: What is Garbage Collection(GC)? 2024, נוֹבֶמבֶּר
Anonim

הבדל מפתח – אספן אשפה מול משמיד

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

מהו אספן אשפה?

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

בשפות תכנות C ו-Java, אם יש מחלקה בשם Student, אז ניתן ליצור אובייקט באמצעות Student s=new Student (); ה'חדש' משמש ליצירת מופע של כיתת סטודנטים. זה מקצה זיכרון במערכת. ה-'s' מתייחס לבלוק הזיכרון שהוקצה לאותו אובייקט. סביבות השפה מזהות אם האובייקטים נמצאים בשימוש או לא. אם לא נעשה בהם שימוש נוסף, הזיכרון משוחרר וניתן להשתמש בו מאוחר יותר.

ההבדל בין אספן אשפה ומשמיד
ההבדל בין אספן אשפה ומשמיד

איור 01: אוסף אשפה ומשמיד

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

מהו הרס?

הרס הוא פונקציית חבר מיוחד של מחלקה. הוא מופעל בכל פעם שהאובייקט יוצא מהטווח. האובייקט יכול להיהרס כאשר פונקציה מסתיימת או בסוף הפעלת התוכנית. להורס יש אותו שם כמו שם הכיתה. הבנאי משמש ליצירת האובייקט. זה יכול לקבל פרמטרים. לבנאי יכולים להיות גם ערכי החזרה. אבל ב-Destructor, אין סוג החזרה או קבלת פרמטרים.כיתה יכולה להיות מורכבת רק מהרס אחד. משמיד מופנה באמצעות סימן טילדה. אם שם הכיתה הוא Student, אז ההורס הוא ~Student () {}.

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

מהו הדמיון בין אוסף אשפה למשמיד?

הן אספן אשפה והן משמיד משמשים לשחרור זיכרון שאינו נדרש עוד עבור התוכנית

מה ההבדל בין אוסף אשפה למשמיד?

אספן אשפה נגד הרס

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

סיכום – אספן אשפה מול משמיד

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

הורד את ה-PDF של אספן זבל נגד Destructor

ניתן להוריד את גרסת ה-PDF של מאמר זה ולהשתמש בה למטרות לא מקוונות לפי הערת ציטוט. אנא הורד את גרסת ה-PDF כאן: ההבדל בין אספן אשפה ומשמיד

מוּמלָץ: