תיעוד תמונת מצב של הזיכרון (תצוגות)

הטמעה של Jetpack פיתוח נייטיב

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

איך מוצאים דליפות זיכרון

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

  • מופעים של Activity שהושמדו אבל עדיין יש הפניה אליהם.
  • מופעי Fragment שאין להם FragmentManager תקין, אבל עדיין יש הפניה אליהם.

חשוב לדעת שהמסנן עלול להניב תוצאות חיוביות כוזבות במצבים הבאים:

  • נוצר Fragment אבל עדיין לא נעשה בו שימוש.
  • מתבצעת שמירה במטמון של Fragment, אבל לא כחלק מFragmentTransaction.

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

  • הפניות לטווח ארוך אל Activity,‏ Context,‏ View,‏ Drawable ואובייקטים אחרים שעשויים להכיל הפניה למאגר התגים Activity או Context.
  • מחלקות פנימיות לא סטטיות, כמו Runnable, שיכולות להכיל מופע של Activity.
  • מטמון שמכיל אובייקטים יותר זמן מהנדרש.

כשמזהים דליפות זיכרון פוטנציאליות, אפשר להשתמש בכרטיסיות Fields ו-References ב-Instance Details כדי לעבור למופע או לשורת קוד המקור הרלוונטיים.

הפעלת דליפות זיכרון לצורך בדיקה

כדי לגרום לדליפות זיכרון לצורך בדיקה באפליקציה, אפשר להפעיל דליפות באחת מהדרכים הבאות:

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