-
אנחנו יכולים לעשות התאמה קטנה בקוד שלנו
שימנע נטישה מוגזמת.
-
בואו נציץ בתצוגת השוואתית
-
במקום לשרשר כל פעם ערך מתא אחד
כדי לבנות את השורה, בואו נשתמש
-
באובייקט StringBuilder, ונבנה
כל שורה באמצעות מחרוזת אחת
-
נשים לב כי הגדרת אובייקט StringBuilder
מבוצעת מחוץ ללולאה,
-
ולכן הזיכרון שלה מוקצה פעם אחת.
-
ואז פשוט נשתמש בו כמקטע זכרון
-
בכל איטרציה של הלולאה, ראשית
ננקה אותו ואז נוסיף לו
-
מחרוזת המכילה מספרים המייצגים את
השורה של האיטרצייה הנוכחית
-
עכשיו הציצו בהערות המדריכה,
לקבלת פרטים נוספים על הקוד
-
יאללה בואו נוודא שזה עובד.
-
יש לוודא שאנו טוענים את הענף הנכון של הקוד
-
הנקרא memory_churn_optimized
לשתי התצוגותמעקב (trace) וזכרון.
-
נראה שבחלון הזמן הקצר כמות הגישות
של ה GC (תהליך שחרור זכרון) ירדה
-
אתם יכולים להשתמש גם בהקצאת אובייקט
עקיבה (tracker) כדי לאמת.
-
אם הקצאתם אובייקט עקיבה (tracker)
-
וקיבלתם משהוא בלתי צפוי
בתצוגת העקיבה או הזכרון
-
שתפו תמונה של הפלט בפורום הדיונים
-
נשמח לראות מה קיבלתם
-
עכשיו לגבינו, גם עם השינויים
הפירט עדיין עוצר.
-
אבל הפעם לפחות זמן
-
בנקודה זו, המשמעות שהפונקציה הזו
כנראה מספיק טובה
-
להיות מועברת לרוץ ברקע.