26-11-2009, 19:01
|
|
|
חבר מתאריך: 13.02.09
הודעות: 365
|
|
ה java יודע האם אובייקט בשימוש או לא: כשאת שמה null במשתנה שהחזיק התייחסות לאובייקט, java מבין שאת לא צריכה את האובייקט. כשאף אחד לא צריך אותו - האובייקט מועמד לשחרור. אחת לזמן מסוים משוחרר הזכרון של כל האובייקטים האלה.
זה לא פשוט. למשל המקרה ששני אובייקטים מכילים התייחסות הדדית זה לזה. ספירה פשוטה של התייחסויות תראה שהם בשימוש. אבל אם התכנית שלך שהקצתה אותם כבר לא מתייחסת לאף אחד מהשניים הם יכולים להיות משוחררים.
היתרונות של השיטה הזאת, מעבר לנוחות של מפתח התוכנה, הן אלה:
* פחות טעויות אנוש (אם כי גם ב java קל לגרום נזקים לזכרון)
* יעילות עקב שימוש חוזר בזכרון באופן אוטומטי, ושחרור בבת אחת שעשוי להיות יעיל מאשר של כל אובייקט בנפרד.
ישנן סיטואציות שמכניזם שחרור הזכרון, ה garbage collection, אינו מקבל הזדמנות לעבוד בגלל אופי התוכנית. זה נדיר אבל עלול לקרות. לשם כך יש אפשרות להשפיע באופן מפורש על ההתנהגות שלו. לרוב לא יהיה לך אכפת מזה.
נערך לאחרונה ע"י טוארג בתאריך 26-11-2009 בשעה 19:03.
|