השימוש בזיכרון (RSS אנונימי ושטח החלפה) הוא מדד בתפקוד האפליקציה שמשקף את השימוש בזיכרון באפליקציה.
זיכרון אנונימי הוא זיכרון שלא מגובה בקובץ באחסון, כמו הקצאות זיכרון בערימה (heap allocation) וזיכרון שהוקצה באמצעות mmap. Resident Set Size (RSS) הוא המספר הכולל של דפי הזיכרון (משותפים ולא משותפים) שמשמשים תהליך מסוים, שמוחזקים ב-RAM הפיזי. בזיכרון אנונימי, המערכת יכולה לכתוב דפים לשטח החלפה (או zRAM ב-Android) כשהזיכרון עמוס.
באופן כללי, השימוש בזיכרון (RSS אנונימי + שטח החלפה) הוא מדד למספר הכולל של דפי הזיכרון של האפליקציה שלא מגובים בקובץ באחסון, כולל כל זיכרון שנשמר גם על ידי המערכת בשטח ההחלפה. מעקב אחרי RSS אנונימי ושטח החלפה מאפשר לכם לראות את הזיכרון שבשימוש האמיתי של האפליקציה, שלא ניתן לפנות.
זיהוי שימוש גבוה בזיכרון
תפקוד האפליקציה
במסגרת תפקוד האפליקציה, השימוש בזיכרון של האפליקציה מוצג בחלוקה לפי מצבי התהליך הבאים:
- חזית: התהליך של האפליקציה גלוי. אחוזון 99 גבוה כאן משפיע לעיתים קרובות על הביצועים כפי שהמשתמשים תופסים אותם (קריסות מסוג jank או OOM), והוא נובע בעיקר משמירה של רכיבי ממשק משתמש או פעילויות שכבר לא נחוצים.
- שירותים שמשפיעים על המשתמשים: תהליך האפליקציה פועל במצב מורגש. זה כולל שירותים שפועלים בחזית, משימות בעדיפות גבוהה ומשימות של העברת נתונים ביוזמת המשתמשים. היא יכולה גם להרחיב את הגישה לשירותים שקשורים למערכת או לשירותים שקשורים לאפליקציות אחרות. מכיוון שהשירותים האלה מיועדים למשימות ארוכות, שמירה על הזיכרון בגלל דליפות או אי-שחרור של משאבים עלולים לנפח את זנב ה-P99 לאורך זמן.
- ברקע: האפליקציה מפעילה שירות הפועל ברקע, או שהיא הועברה לאחרונה לרקע אבל עדיין לא נשמרה במטמון. במצב כזה, זליגות של תהליכים ברקע ומשאבים שלא שוחררו יכולים להצטבר. מצב התהליך הזה פחות חשוב מתהליכים שפועלים בחזית או מתהליכים שניתן להבחין בהם, לכן כדאי להימנע משמירת כמויות גדולות של זיכרון במצב הזה.
- שמורה במטמון: האפליקציה במצב שמירה במטמון. המצב הזה רגיש מאוד לעומס על זיכרון המערכת, כמו LMK. מערכת ההפעלה יכולה להסיר את מצב התהליך הזה כרצונה, ולכן המצב הזה מסופק רק למטרות ניפוי באגים.
כדי להבין איך מצבי התהליך האלה קשורים לקריאות חוזרות (callbacks) של onTrimMemory, עיינו בהנחיות בנושא שחרור זיכרון בתגובה לאירועים.
בנוסף, בתפקוד האפליקציה אפשר לראות פירוט של השימוש בזיכרון לפי קטגוריות RAM. המדד של השימוש בזיכרון מוצג כציר זמן של ערכי אחוזונים יומיים, לצד הערך היומי העדכני ביותר של האחוזונים ה-50 וה-90.
זיהוי דליפות זיכרון באמצעות הטיה של הזנב
כדי לזהות דליפות זיכרון, חפשו הבדלים בין המשתמשים הטיפוסיים (אחוזון 50) לבין המשתמשים בקצה הזנב (אחוזון 99) בתפקוד האפליקציה. בעוד שנכסים מנופחים באופן כללי מגדילים את השימוש בזיכרון באופן אחיד בכל האחוזונים, דליפות זיכרון מצטברות לאורך זמן, ומעוותות באופן משמעותי את הנתונים בקצה הזנב (P99).
השוו בין מדדי P90 ו-P99 לבין ערך הבסיס של P50 לפי שם התהליך. אם היחס בין P99 ל-P50 הוא פי 3.5 או יותר, כנראה שיש דליפת זיכרון במהלך סשנים ארוכים. בתרחישי שימוש מסוימים, יחס גבוה לא תמיד מצביע על דליפה, לכן צריך להעריך את תהליך העבודה הספציפי כדי לקבוע אם השימוש המוגבר בזיכרון הוא התנהגות צפויה.