(Garbage collection) איסוף אשפה (Dynamic memory allocation) ניהול זיכרון דינמי : כותרת חילופית Garbage Collection: Algorithms for automatic dynamic memory management, Richard Jones and.
Download ReportTranscript (Garbage collection) איסוף אשפה (Dynamic memory allocation) ניהול זיכרון דינמי : כותרת חילופית Garbage Collection: Algorithms for automatic dynamic memory management, Richard Jones and.
(Garbage collection) איסוף אשפה (Dynamic memory allocation) ניהול זיכרון דינמי:כותרת חילופית Garbage Collection: Algorithms for automatic dynamic memory management, Richard Jones and Rafael Lins, Wiley, 1999. :ספר בתחום ? כמה זיכרון צורכת התוכנית הבאה 3 p 1 malloc 2 malloc malloc 5 p 4 malloc 6 malloc malloc p p 7 malloc 9 malloc O(n) סיבוכיות מקום נוסף 11 8 malloc malloc 13 10 12 malloc 14 malloc malloc malloc O(1) סיבוכיות מקום … (Garbage collection) איסוף אשפה (Dynamic memory allocation) ניהול זיכרון דינמי:כותרת חילופית Garbage Collection: Algorithms for automatic dynamic memory management, Richard Jones and Rafael Lins, Wiley, 1999. :ספר בתחום ? כמה זיכרון צורכת התוכנית הבאה 3 q 1 free 4 2 free 5 free 6 free p 7 8 free free 9 11 12 … q 13 14 10 .free איך לשחרר צמתים שהמתכנת לא שחרר באמצעות פקודת:הבעיה איסוף אשפה Garbage collection בעיית איסוף אשפה משתנים נוצרו בזמן משתנים של התכנית קלט: פלט: לשחרר את את צמתי האשפה ריצה ע"י malloc Heap מחסנית frame v1 v2 v3 x y z ee hh אשפה :צמתים שאין אליהם מסלול מאף משתנה תכנית איסוף אשפה Garbage collection בעיית איסוף אשפה משתנים בזמן ריצה נוצרו ע"י malloc קלט: פלט: לשחרר את את צמתי האשפה ב malloc -הבא מוצאים אבר מAVAIL - משתני התכנית v1 v2 v3 x y z ee hh פתרון 1 ספירה Reference counting 1 1 2 2 1 1 2 2 1 להוסיף לכל צומת Vשדה count השומר את מספר המצביעים אליו 1 v1 v2 v3 x y z ee hh אלגוריתם .1עדכן את countשל V בכל פעם שמשנים מצביע .2אם countשל Vשווה 0 שים את הצומת בAVAIL - 1 1 2 2 1 0 1 2 1 2 1 1 AVAIL v1 v2 v3 x y z ee hh בעיה 1 1 2 2 1 1 1 אין גישה למעגל 2 2 1 1 1 v1 v2 v3 x y z ee hh Tracing collector סימון Depth First Search (DFS) אלגוריתם v1 v2 v3 x y z ee hh 2 פתרון אלגוריתם )Depth First Search (DFS חסרון :אלגוריתם רקורסיבי v1 v2 v3 x y z ee hh סבוכיות מקום אלגוריתם רקורסיבי )O(n משתמש במחסנית אלגוריתם DFSללא רקורסיה v1 v2 v3 x y z ee hh נניח שתמיד יש מצביע לצומת הקודמת איך נדע אם המצביע מקורי? נוסיף משתנה color לכל מצביע Compaction דחיסה :פלט :קלט a v1 v2 v3 x y z ee hh b c d e f g Compaction דחיסה :פלט a b c d e f g v1 v2 v3 x y z ee hh שימו לב g f e n=7 d .1לספור את מספר הצמתים .2לקצות מקום .3לעביר ולהחליף בכתובת .4עדכון מצביעים c b a v1 v2 v3 x y z ee hh n=7 a d b e f c g .1לספור את מספר הצמתים .2לקצות מקום .3לעביר ולהחליף בכתובת .4עדכון מצביעים סבוכיות מקום )O(1 v1 v2 v3 x y z ee hh