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