הדף הזה כולל מידע על איתור דליפות זיכרון והפעלתן, שייחודי לפריסות מבוססות-תצוגה. מידע בסיסי על לכידה וניתוח של תמונות מצב של הזיכרון זמין במאמר לכידת תמונת מצב של הזיכרון.
איך מוצאים דליפות זיכרון
כדי לסנן במהירות את הכיתות שאולי משויכות לדליפות זיכרון, פותחים את התפריט הנפתח של הכיתה ובוחרים באפשרות הצגת דליפות של פעילות או של מקטעים. ב-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, ואם האפליקציה מחזיקה בהפניה לאחד מהאובייקטים האלה במקום אחר, המערכת לא יכולה לבצע איסוף אשפה. - לעבור בין האפליקציה שלכם לבין אפליקציה אחרת כשמצבי הפעילות שונים. לדוגמה, עוברים למסך הבית ואז חוזרים לאפליקציה.