Finalization: בעצם הניקוי של ה"זבל" של האוביקט שנוצר. כלומר, אתה יוצר אוביקט(אינסטנס של מחלקה מסוימת). בסיומו, מתבצע תהליך ה Finalization, שבו האוביקט "מנקה אחריו" את הזבל שהוא משאיר וכן מפעיל את מנגנון ה Garbage Collection, אם נתמך. שים לב ש-קודם- מתבצע תהליך ה Finalize, ורק אחר כך ניתן להפעיל את תהליך ה GC. תהליך ה Finalization בעצם נותן מן הזדמנות שניה לאוביקט לתת תוצרים נוספים, כלומר שאחרי ההזדמנות השניה הזו האוביקט ינוקה ולא יפעל עוד.Resurrection: כאשר אתה עושה את תהליך ה Finalization אתה מצפה שמערכת ה Garbage Collector בעצם "תנקה" אחריך. זה לא בהכרח נכון, כי כאשר אתה עושה Finalization, אתה יכול להגדיר(אם האפשרות נתמכת כמובן, למשל ב JAVA) שהאובייקטים שתם זמנם יתייחסו למשתנה מסוים וימנעו בעצם ממערכת ה GC לפעול על האובייקט. תהליך זה נקרא Resurrection.
Generations: למען האמת Generations הוא אלגוריתם נפוץ שמשתמשים בו במערכות Garbage Collection. הוא פועל על כמה עקרונות עיקריים:
-ככל שהאובייקט חדש יותר, כך חייו קצרים יותר.
-ככל שהאובייקט ישן יותר, כך חייו ארוכים יותר.
-קיים סיכוי סביר שלאובייקטים חדשים יהיו קשרים מסוימים, כלומר שאובייקטים חדשים יתייחסו אחד לשני בתדירות גבוהה יותר מאשר אובייקטים ישנים עם חדשים.
-נוח ומהיר יותר "לזרוק לזבל" חלקים חלקים מ"ערימת הזבל" שנוצרת אחרי פעולתו של אוביקט, מאשר לזרוק את כולו בבת אחת.
על פי מה שאני יודע, מנגון ה GC של C# ו JAVA עובדים על פי אלגוריתם זה.
אם יש עוד שאלות אתה מוזמן :-)
לירן.
\x6C\x65\x65\x74\x68\x61\x78\x30
\x72\x3A\x2D\x29
tresp4sser