שימוש בזיכרון של מפת הסיביות (bitmap)

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

זיהוי שימוש גבוה בזיכרון של מפת הסיביות (bitmap)

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

ב"תפקוד האפליקציה" מוצג השימוש בזיכרון של מפת הסיביות (bitmap) באפליקציה, בחלוקה לפי מצבי התהליך הבאים:

  • חזית: התהליך של האפליקציה גלוי. הערך של P99 צפוי להיות גבוה משמעותית בחזית בהשוואה למצבי תהליך אחרים, אבל המפתחים צריכים לבדוק אם היחס בין P99 ל-P50 הוא משמעותי (למשל, גבוה מפי 3.5), כי לעיתים קרובות זה מצביע על דליפת זיכרון של מפת סיביות. כדי לזהות את זה, אתם יכולים לחפש הבדל בין השימוש הרגיל (אחוזון 50) לבין השימוש החריג (אחוזון 99). בעוד שנכסים מנופחים מגדילים את השימוש בזיכרון באופן אחיד בכל האחוזונים, דליפות זיכרון מצטברות לאורך זמן ומטות באופן משמעותי את הנתונים בקצה הזנב (אחוזון 99). חשוב לוודא שהקצאות של מפות סיביות בחזית לא נשארות ללא צורך אחרי שהאפליקציה עוברת למצבים אחרים.
  • שירותים שמשפיעים על המשתמשים: תהליך האפליקציה פועל במצב מורגש. זה כולל שירותים שפועלים בחזית, משימות בעדיפות גבוהה ומשימות של העברת נתונים ביוזמת המשתמשים. אסור לאפליקציות לשמור הקצאות כבדות של מפות סיביות בחזית כשהן עוברות למצבים האלה. השירותים האלה מיועדים למשימות ארוכות, ולכן שמירה של נכסים גדולים פוגעת בחוויית המשתמש הכוללת ומאלצת את Low Memory Killer Daemon‏ (LMKD) לפנות זיכרון על ידי סיום תהליכים בעדיפות נמוכה יותר.
  • ברקע: האפליקציה מפעילה שירות הפועל ברקע, או שהיא הועברה לאחרונה לרקע אבל עדיין לא נשמרה במטמון. מצב התהליך הזה פחות חשוב מתהליכים שפועלים בחזית או שניתן להבחין בהם, ולכן האפליקציות צריכות לשחרר באופן מפורש נכסי מפת סיביות גדולים כדי להפחית את העומס על הזיכרון.
  • שמורה במטמון: האפליקציה במצב שמירה במטמון. המצב הזה רגיש מאוד לעומס על זיכרון המערכת, כמו LMK. האפליקציות צריכות לצמצם באופן יזום את השימוש בזיכרון של מפת הסיביות במצב הזה כדי למנוע פינוי על ידי מערכת ההפעלה.

גורמים לשימוש גבוה בזיכרון של מפת הסיביות (bitmap)

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